看了mars老师的Android视频,真心不错,文件下载的方法,整理一下。

一、文件下载方法:

1. 使用HTTP协议下载文件

2. 将下载的文件写入SDCARD

二、文件下载的具体步骤:

1.    创建一个HttpURLConnection对象

HttpURLConnection urlConn

= (HttpURLConnection)url.openConnection();

2.    获得一个InputStream对象

urlConn.getInputStream()

3.    访问网络的权限

Androidpermission.INTERNET

 

访问SDCARD

得到当前设备SD卡的目录

Environment.getExternalStorageDirectory()

访问SD卡的权限

Android.permission.WRITE_EXTERNAL_STORAGE

具体代码如下:

布局文件:

<?xml version="1.0" encoding="utf-8"?>        
 
FileUtils类:
package utils;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import android.os.Environment;public class FileUtils {private String SDPATH;public String getSDPATH(){return SDPATH;}public FileUtils() {SDPATH = Environment.getExternalStorageDirectory() + "/";}public File creatSDFile(String fileName) throws IOException{File file = new File(SDPATH + fileName);file.createNewFile();return file;}public File creatSDDir(String dirName) {File dir = new File(SDPATH + dirName);dir.mkdirs();return dir;}public boolean isFileExist(String fileName) {File file = new File(SDPATH + fileName);return file.exists();}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);}}catch(Exception e) {e.printStackTrace();}finally{try{output.close();}catch(Exception e){e.printStackTrace();}}return file;}}

 


 HttpDownLoader类:

 

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;import javax.net.ssl.HttpsURLConnection;public class HttpDownLoader {private URL url = null;public String download(String urlStr){StringBuffer sb = new StringBuffer();String line = null;BufferedReader buffer = null;try{url = new URL(urlStr);HttpURLConnection urlConn =  (HttpsURLConnection) 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(Exception e){e.printStackTrace();}}return sb.toString();}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();} finally {try{inputStream.close();}catch (Exception e){e.printStackTrace();}}return 0;}public InputStream getInputStreamFromUrl(String urlStr)        throws MalformedURLException, IOException{url = new URL(urlStr);HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();InputStream inputStream = urlConn.getInputStream();return inputStream;}}


 

DownLoad类:

import utils.HttpDownLoader;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class DownLoad extends Activity{private Button downloadTxtButton;private Button downloadMp3Button;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_main);downloadTxtButton = (Button)findViewById(R.id.downloadText);downloadTxtButton.setOnClickListener(new DownloadTxtListener());downloadMp3Button = (Button)findViewById(R.id.downloadMp3);downloadMp3Button.setOnClickListener(new DownloadMp3ButtonListener());}class DownloadTxtListener implements OnClickListener{@Overridepublic void onClick(View arg0) {HttpDownLoader httpDownloader = new HttpDownLoader();String lrc = httpDownloader.download("http://...");System.out.println(lrc);}}class DownloadMp3ButtonListener implements OnClickListener{@Overridepublic void onClick(View v) {HttpDownLoader httpDownloader = new HttpDownLoader();int result = httpDownloader.downFile("http://...", "/voal","a1.mp3");System.out.println(result);}}}


 

更多相关文章

  1. Android(安卓)更新升级下载 自定义Updates 兼容版
  2. 关于Android(安卓)studio混淆遇到的问题
  3. Android(安卓)调用系统相机 失败
  4. Android(安卓)升级apk 兼容6.0 7.0
  5. Jacoco在Android系统应用测试中覆盖率一直为0的解决方案
  6. SharedPreferences之Android数据保存
  7. Android(安卓)对话框【Dialog】去除白色边框代码
  8. Android第五个功能:文件存储到SDCard上面
  9. NPM 和webpack 的基础使用

随机推荐

  1. Android用xml写动画效果
  2. Android性能优化的一些方法
  3. 如何在EditText中显示提示文字
  4. Spinner控件的使用
  5. Android中的各种Dialog
  6. 多平台部署
  7. Android查看网页源码与开启子线程
  8. Android 利用Sharp样式设置文本框EditTex
  9. 使用saripaar对android输入控件进行快速
  10. Android阅读源码的几种方法