Download功能的实现

来源:互联网 发布:域名中.net是什么意思 编辑:程序博客网 时间:2024/05/19 03:28
//Activity的实现package com.example.clover.download;import android.support.v7.app.ActionBarActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import com.example.clover.download.utils.HttpDownloader;public class Download extends ActionBarActivity {          private Button downloadTxtButton;          private Button downloadMp3Button;          @Override          protected void onCreate(Bundle savedInstanceState) {                    super.onCreate(savedInstanceState);                    setContentView(R.layout.activity_download);                    downloadTxtButton = (Button) findViewById(R.id.downloadTxt);                    downloadTxtButton.setOnClickListener(new DownloadTxtListener());                    downloadMp3Button = (Button) findViewById(R.id.downloadMp3);                    downloadMp3Button.setOnClickListener(new DownloadMp3Listener());          }          class DownloadTxtListener implements View.OnClickListener {                    @Override                    public void onClick(View v) {                              HttpDownloader httpDownloader = new HttpDownloader();                              String lrc = httpDownloader.download("http://www.5ilrc.com/downlrc2_501485_15960.html");                              System.out.println(lrc);                    }          }          class DownloadMp3Listener implements View.OnClickListener {                    @Override                    public void onClick(View v) {                              // TODO Auto-generated method stub                              HttpDownloader httpDownloader = new HttpDownloader();                              int result = httpDownloader.downFile("http://qzone.haoduoge.com/music6/2015-08-12/1439359004.mp3", "voa/", "a1.mp3");                              System.out.println(result);                    }          }}

两个工具类

package com.example.clover.download.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;/** * 作者:Jacky * 邮箱:550997728@qq.com */public class HttpDownloader {          private URL url = null;          /**           * 根据URL下载文件,前提是这个文件当中的内容是文本,函数的返回值就是文件当中的内容           * 1.创建一个URL对象           * 2.通过URL对象,创建一个HttpURLConnection对象           * 3.得到InputStram           * 4.从InputStream当中读取数据           * @param urlStr           * @return           */          public String download(String urlStr) {                    StringBuffer sb = new StringBuffer();                    String line = null;                    BufferedReader buffer = null;                    try {                              // 创建一个URL对象                              url = new URL(urlStr);                              // 创建一个Http连接                              HttpURLConnection urlConn = (HttpURLConnection) url                                   .openConnection();                              // 使用IO流读取数据                              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 (Exception e) {                                        e.printStackTrace();                              }                    }                    return sb.toString();          }          /**           * 该函数返回整形 -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 (Exception e) {                                        e.printStackTrace();                              }                    }                    return 0;          }          /**           * 根据URL得到输入流           *           * @param urlStr           * @return           * @throws MalformedURLException           * @throws IOException           */          public InputStream getInputStreamFromUrl(String urlStr)               throws MalformedURLException, IOException {                    url = new URL(urlStr);                    HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();                    InputStream inputStream = urlConn.getInputStream();                    return inputStream;          }}
package com.example.clover.download.utils;import android.os.Environment;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;/** * 作者:Jacky * 邮箱:550997728@qq.com */public class FileUtils {          private String SDPATH;          public String getSDPATH() {                    return SDPATH;          }          public FileUtils() {                    //得到当前外部存储设备的目录                    // /SDCARD                    SDPATH = Environment.getExternalStorageDirectory() + "/";          }          /**           * 在SD卡上创建文件           *           * @throws IOException           */          public File creatSDFile(String fileName) throws IOException {                    File file = new File(SDPATH + fileName);                    file.createNewFile();                    return file;          }          /**           * 在SD卡上创建目录           *           * @param dirName           */          public File creatSDDir(String dirName) {                    File dir = new File(SDPATH + dirName);                    dir.mkdirs();                    return dir;          }          /**           * 判断SD卡上的文件夹是否存在           */          public boolean isFileExist(String fileName){                    File file = new File(SDPATH + fileName);                    return file.exists();          }          /**           * 将一个InputStream里面的数据写入到SD卡中           */          public File write2SDFromInput(String path,String fileName,InputStream input){                    File file = null;                    OutputStream output = null;                    try{                              creatSDDir(path);                              file = creatSDFile(path + fileName);                              output = new FileOutputStream(file);                              byte buffer [] = new byte[4 * 1024];                              while((input.read(buffer)) != -1){                                        output.write(buffer);                              }                              output.flush();                    }                    catch(Exception e){                              e.printStackTrace();                    }                    finally{                              try{                                        output.close();                              }                              catch(Exception e){                                        e.printStackTrace();                              }                    }                    return file;          }}

这里写图片描述

这里写图片描述

必须在AndroidManifest.xml文档中加入权限
这里写图片描述


这里写图片描述

0 0
原创粉丝点击