HttpURLConnection 上传方式:

尝试理解这两种流的区别:

InputStreamReader 的读取方式:

 //创建一个URL对象
URL url = new URL(urlString); //创建一个HttpURLConnection
HttpURLConnetion urlConn = (HttpURLConnection)url.openConnecton(); //读取数据
BufferReader buffer = new BufferReader(new InputStreamReader(urlConn.getInputStream()));
StringBuffer sb = null;
String line = null;
while((line = buffer.readline()) != null){
sb.append(line);
}

InputStream 的读取方式:

//创建一个URL对象
URL url = new URL(urlString); //创建一个HttpURLConnection
HttpURLConnection urlConn =(HttpURLConnection)url.openConnection(); //获取一个InputStream
InputStream inputStream = urlConn.getInputStream(); //获取SD卡的路径
String SDPath = Environment.getExternalStorageDirectory() + "/"; //创建要使用的文件夹
File dir = new File(SDPath + dirName);
dir.mkdirs(); //创建输出文件
File file = new File(SDPath + dirName + fileName);
file.createNewFile(); //创建一个文件输出流
OutputStream output = new FileOutputStream(file); //建立缓冲
byte[] buffer = new byte[1*1024]; //Stream读取索引
int downloadNum = 0; //将输入流写到文件当中
while((downloadNum = inputStream.read(buffer)) != -1){
output.write(buffer, 0, downloadNum);
}
output.flush();

在文件下载到sd卡上时,output.write(buffer);这句代码是绝对有问题的,会导致文件已损坏。所以要处理下。
因为假设你每次读40kb的数据  对于一个76kb的文件来说   最后一次读取buffer里面只有76-40=36kb而已
然而你依然网文件里面写入40kb的数据  导致文件末尾有4kb的空白数据  实际上有时候会影响文件的读取的  不过至少文件还是一个包含完整数据的文件

Android下载文件到SD卡的更多相关文章

  1. android 写文件到sd卡问题小记

    android 写文件到sd卡问题小记 事情是这样子的.... 这天我开始编写项目调试工具,高大上不?-----其实就是记录实时网络请求和崩溃日志相关等的小工具(此处一个会心的微笑). 然后我是这样写 ...

  2. 从网络上下载文件到sd卡上

    String SDPATH = Environment.getExternalStorageDirectory() + "/"; String path = SDPATH + &q ...

  3. [android] 保存文件到SD卡

    /****************2016年5月4日 更新*****************************/ 知乎:为什么很多Android应用要把文件写到/sdcard目录下而不是写到/d ...

  4. android保存文件到SD卡中

    想把文件保存到SD卡中,一定要知道SD卡的路径,有人说可以用File explore来查看,这种方法不太好,因为随着android版本的升级,SD卡的路径可能会发生改变.在1.6的时候SD的路径是/s ...

  5. Android 下载文件及写入SD卡

    Android 下载文件及写入SD卡,实例代码 <?xml version="1.0" encoding="utf-8"?> <LinearL ...

  6. 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)

    1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...

  7. android之写文件到sd卡

    1.main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:a ...

  8. android复制数据库到SD卡(网上搜集,未经验证)

    android中使用sqlite.复制assets下的数据库到SD卡.支持大于1M的文件 如果使用SD卡,需要在AndroidManifest.xml中设置权限 <uses-permission ...

  9. Android中播放本地SD卡中歌曲须要的加入的权限

    使用MediaPlayer播放本地Mp3文件时.须要注意的訪问路径的问题以及訪问权限的问题. 1.訪问路径:/storage/emulated/0 此路径即为手机的根路径,能够通过下载ES文件浏览器软 ...

随机推荐

  1. android menu showAsAction属性

    app中有一个菜单(menu),showAsAction主要是针对这个菜单的显示起作用的,它有三个可选项:always:总是显示在界面上 never:不显示在界面上,只让出现在右边的三个点中 ifRo ...

  2. BZOJ1050 [HAOI2006]旅行

    其实这道题根本不用最短路算法... 我们可以就把边从小到大排序,那么只需要枚举大小两个端点,把中间的边都加进去判断联通性即可. 判断联通性显然用的是并查集. #include <cstdio&g ...

  3. 【leetcode】Binary Search Tree Iterator

    Binary Search Tree Iterator Implement an iterator over a binary search tree (BST). Your iterator wil ...

  4. 【UGUI】Canvas和Rect Transform

    Canvas 1.所有的UI元件都需要放在Canvas里 2.UI元件的绘制顺序,与在 Hierarchy的顺序相同,在上面的元素会先被绘制,位于后续绘制元素的下面 3.可以选择3种不同的渲染模式: ...

  5. 13.第一个只出现一次的字符[FindFirstNotRepeatingChar]

    [题目] 在一个字符串中找到第一个只出现一次的字符.如输入abaccdeff,则输出b. [分析] 这道题是2006年google的一道笔试题. 看到这道题时,最直观的想法是从头开始扫描这个字符串中的 ...

  6. CodeForces - 405C

    Unusual Product Time Limit: 1000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u Sub ...

  7. Mysql 5.6.17-win64.zip配置

    第一大步:下载. a.俗话说:“巧妇难为无米之炊”嘛!我这里用的是 ZIP Archive 版的,win7 64位的机器支持这个,所以我建议都用这个.因为这个简单嘛,而且还干净. 地址见图 拉倒最下面 ...

  8. 归并排序的分析与Java实现

    归并操作(merge),也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作.归并排序算法依赖归并操作.该算法是采用分治法(Divide and Conquer)的一个非常典型的应用.归并排序 ...

  9. tty相关内容

    参考文章: http://blog.csdn.net/goodluckwhh/article/details/13368279

  10. ytu 1041: 迭代法求平方根(水题)

    1041: 迭代法求平方根 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 227  Solved: 146[Submit][Status][Web Bo ...