Android文件下载
来源:互联网 发布:崂山道士马思唯 知乎 编辑:程序博客网 时间:2024/06/06 20:29
看了mars老师的Android视频,真心不错,文件下载的方法,整理一下。
一、文件下载方法:
1. 使用HTTP协议下载文件
2. 将下载的文件写入SDCARD
二、文件下载的具体步骤:
1. 创建一个HttpURLConnection对象
HttpURLConnection urlConn
= (HttpURLConnection)url.openConnection();
2. 获得一个InputStream对象
urlConn.getInputStream()
3. 访问网络的权限
Android:permission.INTERNET
访问SDCARD
得到当前设备SD卡的目录
Environment.getExternalStorageDirectory()
访问SD卡的权限
Android.permission.WRITE_EXTERNAL_STORAGE
具体代码如下:
布局文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation = "vertical"> <Button android:id="@+id/downloadText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="下载文本文件"/> <Button android:id="@+id/downloadMp3" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="下载MP3文件"/></LinearLayout>
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);}}}
- Android 文件下载
- Android 文件下载
- android文件下载!download!
- android 文件下载
- android:文件下载
- Android 多线程文件下载
- android 文件的下载
- Android文件下载 HttpURLConnection
- 文件下载(java) android
- android 之文件下载
- android文件下载!download!
- Android文件下载
- Android之文件下载
- Android之文件下载
- android apk文件下载
- Android中的文件下载
- android 下载文件类
- Android开发 --- 文件下载
- WebView基本使用
- 用C++设计一个不能被继承的类
- Linux Shell输出命令结果到脚本变量中
- android 使用代码实现 RelativeLayout布局
- Java IO学习
- Android文件下载
- extern "c"
- 一个由C/C++编译的程序占用的内存分为以下五个部分
- [置顶] 程序员面试之道(《程序员面试笔试宝典》)之程序员如何保持身心健康?
- UVA 11129 An antiarithmetic permutation 非等差数列 贪心 递归
- 超简洁JS判断是否IE浏览器
- RUID EUID SUID的一些解释和例子
- CodeForces 148E – Porcelain
- 丢失的牛