Mars Android视频学习笔记——01_18_文件下载
来源:互联网 发布:linux 定时任务 编辑:程序博客网 时间:2024/06/10 19:32
转载时请注明转自:http://blog.csdn.net/sam_zhang1984
交流可加新浪微博:Android开发人
文件下载就涉及到两个问题:
1. 下载:使用网络协议下载文件,这里主要是讲利用 HTTP协议下载。
2. 保存:文件可以保存到手机内存,也可以下载到 SDCard,下到 SD 卡是比较常用的。
文件下载的主要步骤有:
1) 创建一个HttpURLConnection 对象。通过URL 的 openConnection 方法,就可以得到一个 HttpURLConnection 对象,所以要先创建一个 URL 对象;
- //得到一个URL对象
- m_URL = new URL(strURL);
- //由URL对象得到一个HttpURLConnection对象
- urlConn = (HttpURLConnection)m_URL.openConnection();
2) 通过HttpURLConnection 对象的getInputStream 方法可以得到一个InputStream 对象;
- /*由HttpURLConnection对象的方法读出字节流,并转成InputStreamReader,InputStreamReader是字
- * 节流通向字符流的桥梁: 它使用指定的 charset 读取 字节并将其解码为字符;最后再转成BufferedReader
- * 这样就便于一行一行读数据了!
- */
- bufferR = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
3) 获取网络访问的权限。
- <uses-permission android:name="android.permission.INTERNET"/>
文件保存(保存到SDCard ):
1) 得到设备SD 卡的目录:使用 Environment.getExternalStorageDirectory 得到SD 卡的目录;
- //得到当前外部存储设备的目录
- // /SDCARD
- SDPATH = Environment.getExternalStorageDirectory() + "/";
2) 获取访问SD 卡的权限;
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
3) 向SD 卡里写入文件,这里涉及到 JAVA 的文件操作。
向SD 卡里面写入文件就涉及到了 JAVA 的 IO 操作了,向卡里加入文件主要有以下几个步骤:
a) 创建存放文件的目录;
- public File creatSDDir(String dirName) {
- File dir = new File(SDPATH + dirName);
- dir.mkdir();
- return dir;
- }
b) 在目录中创建文件;
- public File creatSDFile(String fileName) throws IOException {
- File file = new File(SDPATH + fileName);
- file.createNewFile();
- return file;
- }
c) 根据文件对象创建一个OutPutStream 向文件里写入内容。
- OutputStream output = null;
- InputStream input;
- file = creatSDFile(path + fileName);
- output = new FileOutputStream(file);
- byte buffer [] = new byte[4 * 1024];
- while((input.read(buffer)) != -1){
- output.write(buffer);
- }
JAVA的 IO 操作各种类的记法:
1、 stream结尾的是字节流, reader 或 writer结尾的是字符流;
2、 Buffer开头的是缓冲处理流;
3、 OutputSteamWriter:即是把一个输出字节流,转换成一个输了字符流。
4、 处理流方法名后面是stream ,则其参数是 Inputsteam 类型的字节流;如果处理流方法名后面是 reader 或 writer,则其参数是 reader 或 writer 类型的字符流;
IO流的操作相对比较复杂,方法、类型都比较多,还有得加强基础!
下面是一个好的IO编程习惯:
良好的编程习惯是先写flush ,再写 close。因为 close 直接就把数据流给释放掉,
但如果这时缓冲区里还有数据,就无法再向目标写入了,所以应该先调用flush 把缓冲区
的所有数据写到目的地。
- try{
- .
- .
- .
- .
- .
- output.flush();
- }
- catch(Exception e){
- e.printStackTrace();
- }
- finally{
- try{
- output.close();
- }
- catch(Exception e){
- e.printStackTrace();
- }
- }
- Mars Android视频学习笔记——01_18_文件下载
- Mars Android视频学习笔记——01_18_文件下载
- Mars Android视频学习笔记——01_16_SQLite使用方法
- Mars Android视频学习笔记——01_16_SQLite使用方法
- Mars Android视频学习笔记——01_20_XML文件解析
- Mars Android视频学习笔记——01_20_XML文件解析
- Mars Android视频学习笔记
- Mars Android视频学习笔记
- Mars Android视频学习笔记——01_23_WIFI网络操作
- Mars Android视频学习笔记——01_14/15_Handler的使用
- Mars Android视频学习笔记——01_21/22_广播机制
- Mars Android视频学习笔记——01_14/15_Handler的使用
- Mars Android视频学习笔记——01_23_WIFI网络操作
- Mars Android视频学习笔记——01_21/22_广播机制
- Mars Android视频学习笔记1-基础知识
- Mars Android视频学习笔记——03_03/04_用户定位
- Mars Android视频学习笔记——03_03/04_用户定位
- Mars-Android学习——网络文件下载和写入SD卡
- 二叉树的遍历
- 我们在写程序时,既有程序的逻辑代码,也有在程序中定义的变量等数据
- 第四届“蓝桥杯”全国软件专业人才设计与创业大赛选拔赛C/C++本科A组(题目及代码)
- Mars Android视频学习笔记——01_16_SQLite使用方法
- 进制转换的计算方法
- Mars Android视频学习笔记——01_18_文件下载
- nodejs jsonp跨域使用 服务器端
- 2014/3/22
- Mars Android视频学习笔记——01_20_XML文件解析
- 为2014记下第一笔
- PHP 模拟登陆微信公众平台,一键绑定URL和TOKEN的思路
- linux技术
- Mars Android视频学习笔记——01_23_WIFI网络操作
- 我在现实世界里挣扎!!!