`
chshevo
  • 浏览: 9703 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Android 笔记22 :I/O~文件下载,SDCard文件读、写(转)

阅读更多
原文链接:http://snmoney.blog.163.com/blog/static/440058201010222342599/

这里开始,有点让我这个菜鸟晕乎... 上午我甚至还没搞清楚 InputStream 是什么,和 OutputStream 有什么不同..


其实现在还没完全懂,emmm 先说个大概吧 字面意思理解了...数据流,是的


简单地说我想从网上下载个文件,然后保存到SDCard里,那么遵循的是下面这个大概的步骤。可以理解成从一个大水罐A里取水存到另一个空水罐B里


1. 要知道确切地 uri
2. 建立 HttpUrlConnection(还有URL.getContent等办法,不逐一列举),然后这里可以做一些确保工作之类的~~例如检测返回的状态码确保网络连通,目标文件不会404或者500之类
3. 可以 getInputStream , 于是得到一个is =  InputStream //找到装满水的罐子A了,嘿
4. 然后~ 弄个 byte[] b, 用来做数据的搬运工具,  InputStream.read(b) 这样读出来 //b就是杯子
5. 在同一时间创建一个 File f =new File(..路径..文件名) 还有 os = OutputStream(f) <-----留意这里,时间关系~我让outputstream 和f勾搭上了 //这是空罐子B
6. 开始 os.write(b)  //水从A罐向B了
*7. 完成后可以很好习惯地 is.close(); os.close(); //把两个罐子的盖子盖上~省得被妈妈啰嗦

上面这种方法读小文件是不会有什么问题的,但如果是比较大的文件?尤其是手机上应用~网络很慢会怎样?如果要再贪心一点~想显示下载进度呢?


也就是说如果罐子里的水一杯装不完怎么办?出错了~


在 byte[]这里做做手脚 指定固定的大小,通过循环 read(b), write(b) 的方式就能把流数据切小段读取,但要设计好最后一杯不是满杯的,用write(btye[] b, int start,int count);这个方法能保证不会倒入多余的不明液体~嘿嘿嘿
另外,对http连接获取内容大小,循环的时候知道每杯的容量,每次循环...进度多少也就心里有底了~
分享到:
评论

相关推荐

    android读取sdcard路径下的文件的方法

    代码如下:// 读取sdcard文件private void sdcardRead(){String fileName = “/sdcard/my_sdcard.txt”;// assets下文件//String fileName = “/sdcard/test/my_sdcard_test.txt”;// sdcard下子目录文件String ret =...

    android调试sdcard文件加载,解决不能传入文件问题

    android调试sdcard文件加载,解决不能传入文件问题: 只需要执行4个命令,win和mac下都好使。

    Android N 7.0中报错:android.os.FileUriExposedException的解决方法

    最近在Android N 上 安装Apk时报错:android.os.FileUriExposedException: file:///storage/emulated/0/Download/appName-2.3.0.apk exposed beyond app through Intent.getData(),通过查找相关的资料终于找到了...

    预置一些文件到系统sdcard目录.txt

    预置一些文件到系统sdcard目录

    Android应用源码SdCard读写文件实例

    本实例将探讨如何在Android应用中实现SdCard的读取和写入功能,这涉及到Android的权限管理、文件操作API以及外部存储的相关知识。 1. **权限管理**: 在AndroidManifest.xml文件中,你需要添加`READ_EXTERNAL_...

    android 写入SDcard 文件

    在Android平台上,对SDCard(外部存储)进行文件操作是应用程序与用户交互的重要部分,尤其对于需要存储大量数据或媒体文件的应用来说。本教程将详细解释如何在Android中读写SDCard文件,非常适合初学者入门。 首先...

    android用于打开各种文件的intent.pdf

    Android 中使用 Intent 打开各种文件类型 Android 操作系统提供了 Intent 机制,允许应用程序之间进行交互和通信。Intent 是一个异步的消息机制,用于在应用程序之间请求或提供服务。通过使用 Intent,可以实现打开...

    Android应用源码SdCard读写文件实例.zip

    总结来说,Android应用源码实例展示了如何在用户授权的前提下,使用Java I/O流进行SDCard的读写操作。这包括获取外部存储路径、创建文件、写入和读取数据。在实际开发中,应确保遵循最佳实践,如处理异常、释放资源...

    Android中下载apk文件并安装

    在Android平台上,有时候我们需要实现一个功能,让用户能够直接通过应用下载并安装APK文件,比如更新应用程序或安装第三方应用。这个过程涉及到多个Android系统API和技术点。以下是对这个主题的详细解析: 首先,...

    android webview实现自身下载文件自动保存SDCARD

    而“android webview实现自身下载文件自动保存SDCARD”这个话题则涉及到如何在WebView中处理文件下载,并且让这些文件自动保存到设备的外部存储(通常是SDCARD)中,而且整个过程对用户来说是透明的,即静默下载。...

    文件读写(SD卡文件,及资源文件)

    在Android系统中,文件读写是一项基础且重要的操作,它涉及到对SD卡上的文件和应用程序内部资源文件的处理。理解并掌握文件读写是开发Android应用的必要技能,特别是对于存储用户数据、日志记录或者资源加载等场景。...

    android打开sdcard目录

    // suffix:需要选择的文件后缀,比如需要选择wav、mp3文件的时候设置为".wav;.mp3;",注意最后需要一个分号(;) // images:用来根据后缀显示的图标资源ID。 // 根目录图标的索引为sRoot; // 父目录的索引为...

    安卓SD卡文件管理更新信息相关-无需权限将文件保存到sdcard或应用缓存文件中.rar

    标题"安卓SD卡文件管理更新信息相关-无需权限将文件保存到sdcard或应用缓存文件中.rar"表明这是一个关于如何在不获取额外权限的情况下,将文件保存到SD卡或应用缓存文件夹的教程或代码示例集合。 首先,我们来了解...

    android往手机内存和sdcard卡上存储数据

    在Android应用开发中,存储数据是一项基础且重要的任务。这篇内容将详细讲解如何在手机内存以及SDCard(外部存储)上进行数据存储,并提供了一段经过封装的代码,方便开发者直接应用于实际项目。 首先,我们要了解...

    android中sdcard的读写.doc

    ### Android中SDCard的读写操作详解 #### 一、SDCard访问概述 在Android开发过程中,对于外部存储(如SDCard)的读写是非常常见的需求。本文将详细介绍如何在Android应用中对SDCard进行读写操作,包括获取缓存目录...

    Android代码-强大的图片加载器

    支持http://或https://、asset://、content://、file:///sdcard/sample.jpg或/sdcard/sample.jpg、drawable://、data:image/或data:img/等6种URI 支持gif图. 集成了android-gif-drawable 1.2.6可以方便的显示gif...

    sdcard文件读写案例-ES文件浏览器

    以下是关于"sdcard文件读写案例-ES文件浏览器"的相关知识点: 1. **SD卡访问权限**:在Android 6.0(API级别23)及以上版本,应用需要动态获取读写SD卡的权限。用户在首次运行应用时会被询问是否授予`READ_EXTERNAL...

    OrangeFox downloads (OLD ):下载已移至 https://orangefox.download-开源

    3. **sdcard**:这是一个目录名,通常在Android设备中指代外部存储空间。在这个上下文中,它可能包含与OrangeFox相关的额外文件,如更新脚本、备份文件或附加模块,这些可能需要用户将其复制到设备的SD卡上以便在...

Global site tag (gtag.js) - Google Analytics