转载时请注明转自:http://blog.csdn.net/sam_zhang1984
交流可加新浪微博:Android开发人
文件下载就涉及到两个问题:
1. 下载 :使用网络协议下载文件,这里主要是讲利用 HTTP 协议下载。
2. 保存 :文件可以保存到手机内存,也可以下载到 SDCard ,下到 SD 卡是比较常用的。
文件下载的主要步骤有:
1) 创建一个 HttpURLConnection 对象。通过 URL 的 openConnection 方法,就可以得到一个 HttpURLConnection 对象,所以要先创建一个 URL 对象;
2) 通过 HttpURLConnection 对象的 getInputStream 方法可以得到一个 InputStream 对象;
3) 获取网络访问的权限。
文件保存(保存到 SDCard ):
1) 得到设备 SD 卡的目录:使用 Environment.getExternalStorageDirectory 得到 SD 卡的目录;
2) 获取访问 SD 卡的权限;
3) 向 SD 卡里写入文件,这里涉及到 JAVA 的文件操作。
向 SD 卡里面写入文件就涉及到了 JAVA 的 IO 操作了,向卡里加入文件主要有以下几个步骤:
a) 创建存放文件的目录;
b) 在目录中创建文件;
c) 根据文件对象创建一个 OutPutStream 向文件里写入内容。
JAVA 的 IO 操作各种类的记法:
1、 stream 结尾的是字节流, reader 或 writer 结尾的是字符流;
2、 Buffer 开头的是缓冲处理流;
3、 OutputSteamWriter :即是把一个输出字节流,转换成一个输了字符流。
4、 处理流方法名后面是 stream ,则其参数是 Inputsteam 类型的字节流;如果处理流方法名后面是 reader 或 writer ,则其参数是 reader 或 writer 类型的字符流;
IO流的操作相对比较复杂,方法、类型都比较多,还有得加强基础!
下面是一个好的IO编程习惯:
良好的编程习惯 是先写 flush ,再写 close 。因为 close 直接就把数据流给释放掉,
但如果这时缓冲区里还有数据,就无法再向目标写入了,所以应该先调用 flush 把缓冲区
的所有数据写到目的地。