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;
}
}
- Android学习笔记-文件下载
- Android 文件下载 学习笔记
- Android学习笔记18_文件下载
- android学习笔记之文件下载
- Android学习笔记之文件下载
- android学习笔记3-文件下载
- android学习笔记3-文件下载
- Android学习笔记(八)——文件下载
- Android学习笔记(四六):互联网通信-文件下载
- Android学习笔记(四六):互联网通信-文件下载
- Android学习笔记11:下载文件案例遇到了问题
- Android学习笔记(四六):互联网通信-文件下载
- Android学习笔记————文件下载
- Android学习笔记_15_网络通信之文件断点下载
- 文件下载 -- MarsChen Android 开发教程学习笔记
- Android学习笔记之AsyncTask实现文件下载任务
- android学习笔记之WebView浏览器下载文件
- Android学习笔记039之文件上传和下载
- 文章标题
- 面向对象和面向结构的编程特点和区别
- windows下python ide关联.py文件
- android蓝牙4.0 BLE低功耗应用
- npm的版本升级 (windows)
- Android 文件下载 学习笔记
- javascript学习(十八)javascript事件
- spring-boot @Async 的使用、自定义Executor的配置方法
- d3 齿轮的代码理解
- 桑心の复习一月
- 配置带用户权限的docker registry v2
- windows安装pyhton数据挖掘扩展库
- hdu 3221 矩阵幂乘 + 超大a*b%c
- gradle兼容性问题