Mars Android视频学习笔记——01_18_文件下载

转载时请注明转自:http://blog.csdn.net/sam_zhang1984

交流可加新浪微博:Android开发人

 

 

文件下载就涉及到两个问题:

1.          下载 :使用网络协议下载文件,这里主要是讲利用 HTTP 协议下载。

2.          保存 :文件可以保存到手机内存,也可以下载到 SDCard ,下到 SD 卡是比较常用的。

 

文件下载的主要步骤有:

1)   创建一个 HttpURLConnection 对象。通过 URL openConnection 方法,就可以得到一个 HttpURLConnection 对象,所以要先创建一个 URL 对象;

  1. //得到一个URL对象   
  2.                 m_URL = new URL(strURL);  
  3.                 //由URL对象得到一个HttpURLConnection对象   
  4.                 urlConn = (HttpURLConnection)m_URL.openConnection();  

2)   通过 HttpURLConnection 对象的 getInputStream 方法可以得到一个 InputStream 对象;

  1. /*由HttpURLConnection对象的方法读出字节流,并转成InputStreamReader,InputStreamReader是字 
  2.                  * 节流通向字符流的桥梁: 它使用指定的 charset 读取 字节并将其解码为字符;最后再转成BufferedReader 
  3.                  * 这样就便于一行一行读数据了! 
  4.                  */  
  5.                 bufferR = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));   

3)   获取网络访问的权限。

 

  1. <uses-permission android:name="android.permission.INTERNET"/>  

文件保存(保存到 SDCard ):

1)         得到设备 SD 卡的目录:使用 Environment.getExternalStorageDirectory 得到 SD 卡的目录;

  1. //得到当前外部存储设备的目录   
  2.         // /SDCARD   
  3.         SDPATH = Environment.getExternalStorageDirectory() + "/";  

2)         获取访问 SD 卡的权限;

 

  1. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>  

3)         SD 卡里写入文件,这里涉及到 JAVA 的文件操作。

 

SD 卡里面写入文件就涉及到了 JAVA IO 操作了,向卡里加入文件主要有以下几个步骤:

a)          创建存放文件的目录;

  1. public File creatSDDir(String dirName) {  
  2.         File dir = new File(SDPATH + dirName);  
  3.         dir.mkdir();  
  4.         return dir;  
  5.     }  

b)         在目录中创建文件;

  1. public File creatSDFile(String fileName) throws IOException {  
  2.         File file = new File(SDPATH + fileName);  
  3.         file.createNewFile();  
  4.         return file;  
  5.     }  

 

c)         根据文件对象创建一个 OutPutStream 向文件里写入内容。

 

  1.                         OutputStream output = null;  
  2.                         InputStream input;  
  3.                         file = creatSDFile(path + fileName);  
  4. output = new FileOutputStream(file);  
  5. byte buffer [] = new byte[4 * 1024];  
  6. while((input.read(buffer)) != -1){  
  7.     output.write(buffer);  
  8. }  

 

JAVA IO 操作各种类的记法:

1、   stream 结尾的是字节流, reader writer 结尾的是字符流;

2、   Buffer 开头的是缓冲处理流;

3、   OutputSteamWriter :即是把一个输出字节流,转换成一个输了字符流。

4、   处理流方法名后面是 stream ,则其参数是 Inputsteam 类型的字节流;如果处理流方法名后面是 reader writer ,则其参数是 reader writer 类型的字符流;

IO流的操作相对比较复杂,方法、类型都比较多,还有得加强基础!

下面是一个好的IO编程习惯:

良好的编程习惯 是先写 flush ,再写 close 。因为 close 直接就把数据流给释放掉,

但如果这时缓冲区里还有数据,就无法再向目标写入了,所以应该先调用 flush 把缓冲区

的所有数据写到目的地。

  1. try{  
  2.             .   
  3.                             .  
  4.                             .  
  5.                             .  
  6.                             .  
  7.             output.flush();  
  8.         }  
  9.         catch(Exception e){  
  10.             e.printStackTrace();  
  11.         }  
  12.         finally{  
  13.             try{  
  14.                 output.close();  
  15.             }  
  16.             catch(Exception e){  
  17.                 e.printStackTrace();  
  18.             }  
  19.         }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值