Android 文件下载 学习笔记

来源:互联网 发布:python config 编辑:程序博客网 时间:2024/06/11 11:20

1.使用HTTP协议下载文件


文件下载的主要步骤

①创建一个HttpURLConnection对象

HttpURLConnection urlConn = (httpURLConnection)url.openConnection();

获得一个InputConnection对象

urlConn.getInputStream()                    从而获得一个输入流,向程序当中读入数据,输出流向目标写出数据

访问网络权限

android.permision.INTERNET





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();
}








urlConn.getInputStream()                 字节流处理

new InputStreamReader                   字符流处理

BufferedReader中的readline()              可以按行来读取数据

2.将下载的文件写入SDCARD

①访问SD卡

得到当前设备SD卡的目录

Environment.getExternalStorageDirectory()

访问SD卡的权限

android.permission.WRITE_EXTERNAL_STORAGE                                   必须在Manifest文件里进行声明,才能有写的权利





public FileUtils() {
//得到当前外部存储设备的目录
// /SDCARD
SDPATH = Environment.getExternalStorageDirectory() + "/";
}                                                                                                                                                                                   构造函数,为SDPATH赋值



public File write2SDFromInput(String path,String fileName,InputStream input)


String path    把InputStream写入到哪一个目录中去

String fileName           文件名

InputStream input          变量




outputstream      写入数据

inputstream       读取数据




HttpDownLoader.java

public int downFile(String urlStr, String path, String fileName) 


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;
}
}




0 0
原创粉丝点击