当前位置: 代码迷 >> Android >> 在学习下载文件的时候出现有关问题了
  详细解决方案

在学习下载文件的时候出现有关问题了

热度:92   发布时间:2016-05-01 21:35:56.0
在学习下载文件的时候出现问题了
main.xml
XML code
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    ><Button      android:id="@+id/downloadTxt"    android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:text="@string/txt"    /><Button      android:id="@+id/downloadMp3"    android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:text="@string/mp3"    /></LinearLayout>


AndroidManifest.xml
XML code
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.chk.download"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk android:minSdkVersion="15" />    <application        android:icon="@drawable/ic_launcher"        android:label="@string/app_name" >        <activity            android:name=".DownloadActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application>    <!-- 获得网络权限和SD卡的读写权限 -->    <uses-permission android:name="android.permission.INTERNET"/>    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/></manifest>


HttpDownloader.java
Java code
package com.chk.utils;import java.io.BufferedReader;import java.io.File;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;public class HttpDownloader {        private URL url = null;         /**     * 根据URL下载文件,前提是这个文件当中的内容是文本,函数的返回值就是文本当中的内容     * 1.创建一个URL对象     * 2.通过URL对象,创建一个HttpURLConnection对象     * 3.得到InputStream     * 4.从InputStream当中读取数据     * @param urlStr     * @return     */    public String download(String urlStr){        StringBuffer sb = new StringBuffer();        String line = null;        BufferedReader buffer = null;        try {            url = new URL(urlStr);            HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();            buffer = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));            while( (line = buffer.readLine()) != null){                sb.append(line);            }                    }         catch (Exception e) {            e.printStackTrace();        }        finally{            try {                buffer.close();            } catch (IOException e) {                e.printStackTrace();            }        }        return sb.toString();    }    /**     *      * @param urlStr     * @param path     * @param fileName     * @return      *         -1:文件下载出错     *          0:文件下载成功     *          1:文件已经存在     */    public int downFile(String urlStr, String path, String fileName){        InputStream inputStream = null;        try {            FileUtils fileUtils = new FileUtils();                        if(fileUtils.isFileExist(path + fileName)){                return 1;            } else {                inputStream = getInputStreamFromURL(urlStr);                File resultFile = fileUtils.write2SDFromInput(path, fileName, inputStream);                if(resultFile == null){                    return -1;                }            }        }         catch (Exception e) {            e.printStackTrace();            return -1;        }        finally{            try {                inputStream.close();            } catch (IOException e) {                e.printStackTrace();            }        }        return 0;    }        /**     * 根据URL得到输入流     * @param urlStr     * @return     */    public InputStream getInputStreamFromURL(String urlStr) {        HttpURLConnection urlConn = null;        InputStream inputStream = null;        try {            url = new URL(urlStr);            urlConn = (HttpURLConnection)url.openConnection();            inputStream = urlConn.getInputStream();                    } catch (MalformedURLException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }                return inputStream;    }}
  相关解决方案