资讯专栏INFORMATION COLUMN

File 文件处理

brianway / 1800人阅读

摘要:当应用程序被卸载后,存储在这些目录下的文件都将被删除。创建时,如果你指定的文件名不存在,会为你创建。在不同应用程序间共享文件的标准方式是使用一个。方便返回每个类型文件的存储路径。

将静态文件作为资源添加

如果应用程序需要外部文件资源,那么可以通过将其放置在项目层次结构的 res/raw 文件夹中,从而在自己的分发中包含它。

Resources r = getResources();
InputStream file = r.openRawResource(R.raw.filename);


使用特定于应用程序的文件夹存储文件

Android 下提供了两种创建文件对象:getDirgetExternalFilesDir,两个方法都返回一个 File 对象,每个对象都有指向内部或外部存储的目录路径。当应用程序被卸载后,存储在这些目录下的文件都将被删除。

以上两种方法都接收一个字符串参数,指定用于存放文件的子路径,在 Environment 类中引入了许多 DIRECTORY_[Category]字符串常量,这些常量用来表示标准目录名称,例如:下载目录、图片目录、影视目录、音乐目录、拍照目录

存储在应用程序文件夹中的文件应该市特定于父应用程序的而且通常不会被媒体扫描。

  

getExternalFilesDir 方法是在 API Level 8 中引入的。要想支持较早的平台版本,可以调用 Environment.getExternalStorageDirectory() 获取外部存储根路径。
最好在应用程序自己的子目录下存储特定于该应用程序的数据,即:/android/data/data/Your Package Path/files
如果使用上面方式,当应用程序被卸载时不会将自动删除该应用程序的文件。


创建私有的应用程序

Android 提供了 openFileInputopenFileOutput 方法来简化从应用程序沙箱中的文件读取和写入数据流。
创建 FileOutputStream 时,如果你指定的文件名不存在,Android 会为你创建。对于已经存在的文件的默认行为就是覆盖它;想要在文件末尾追加内容,可以指定模式为 Context.MODE_APPEND
默认情况下,使用 openFileOutput 方法创建的文件对于调用程序市私有的,其他应用程序都无法访问。在不同应用程序间共享文件的标准方式是使用一个 Context Provider。

Context.MODE_WORLD_READABLE 创建一个可读的公共访问的 FileOutputStream

Context.MODE_WORLD_WRITEABLE 创建一个可写的公共访问的 FileInputStream

Context.MODE_APPEND 创建一个可以追加的 FileOutputStream

Context.PRIVATE 创建私有的文件


使用应用程序文件缓存

Android 提供了一个可管理的内部缓存,分别调用 getCacheDirgetExternalCacheDir 方法可以从当前上下文中访问它们。存储在缓存中的文件,在应用程序被卸载时都会被删除。当系统运行在低可用存储空间时,存储在内部缓存中的文件可能被系统所删除;存储在外部缓存中的文件则不会被删除。

这两种情况下,这是用来监控和管理缓存的大小和寿命很好的方式,当超出合理的最大缓存的大小的时候去删除文件。


存储公共可读的文件

API Level 8 还提供了一个便捷的方法 Environment.getExternalStoragePublicDirectory,可以用来找到存储应用程序文件的路径。方便返回每个类型文件的存储路径。
下面是 Environment 常用文件类型的常量:

DIRECTORY_ALARMS 警示音

DIRECTORY_DCIM 拍照和视频

DIRECTORY_DOCUMENTS 文档文件

DIRECTORY_DOWNLOADS 下载文件

DIRECTORY_PICTURES 图片文件

DIRECTORY_MOVIES 电影文件

DIRECTORY_NOTIFICATIONS 代表用户选择的通知音和可用的音频文件

DIRECTORY_RINGTONES 代表用户可选择的铃声和可用的音频文件

DIRECTORY_PODCASTS 代表播客的音频文件

DIRECTORY_MUSIC 音乐文件

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/12092.html

相关文章

  • DM 源码阅读系列文章(六)relay log 的实现

    摘要:作者张学程本文为源码阅读系列文章的第六篇,在上篇文章中我们介绍了处理单元的实现,对在增量复制过程中的读取过滤路由转换以及执行等逻辑进行了分析。值得注意的是,由于我们近期正在对处理单元进行重构,因此源码中会同时包含重构前后的相关代码实现。 作者:张学程 本文为 DM 源码阅读系列文章的第六篇,在 上篇文章 中我们介绍了 binlog replication 处理单元的实现,对在增量复制过...

    张金宝 评论0 收藏0
  • DM 源码阅读系列文章(六)relay log 的实现

    摘要:作者张学程本文为源码阅读系列文章的第六篇,在上篇文章中我们介绍了处理单元的实现,对在增量复制过程中的读取过滤路由转换以及执行等逻辑进行了分析。值得注意的是,由于我们近期正在对处理单元进行重构,因此源码中会同时包含重构前后的相关代码实现。 作者:张学程 本文为 DM 源码阅读系列文章的第六篇,在 上篇文章 中我们介绍了 binlog replication 处理单元的实现,对在增量复制过...

    HitenDev 评论0 收藏0
  • Python文件处理

    摘要:如果文件已经存在,文件指针将会在文件末尾。以二进制方式打开一个文件用于读写,文件指针将放在文件开头。关闭结果文件内容为这么帅的程序员,人间罕见呀。读数据表示从文件中读取的长度,单位字节,如果没有传,将会读取文件的所有内容。 Python文件处理 上一篇文章:Python异常处理下一篇文章:Python文件夹处理 1、文件的打开与关闭 打开语法:open(文件名,访问模式)关闭语法:c...

    Cciradih 评论0 收藏0
  • 第十五章 输入输出系统

    摘要:在包下主要包括输入输出两种流,每种输入输出流又可分为字节流和字符流两大类。输入输出是从程序运行所在的内存的角度而言的。的输入流主要由和作为基类,而输出流主要由和作为基类。 本章主要参考和摘自疯狂java讲义上面的(java编程思想的后面看过后有新的内容再补充进去吧)。  输入输出是所有程序都必需的部分————使用输入机制允许程序读取外部数据(包括磁盘、光盘等存储设备上的数据和用户输入的...

    hankkin 评论0 收藏0
  • 机器学习项目之实现垃圾邮件处理(1)——数据清洗

    摘要:学习了支持向量机算法后想自己用一些数据集来尝试一下,在网络上找了一个垃圾邮件处理的数据集正好适用于支持向量算法,所以在这里不讲算法内容,而是分享我是如何用来实现的。 学习了支持向量机算法后(SVM)想自己用一些数据集来尝试一下,在网络上找了一个垃圾邮件处理的数据集正好适用于SVM支持向量算法,所以在这里不讲SVM算法内容,而是分享我是如何用Python来实现的。 具体数据集:[邮件数据...

    fantix 评论0 收藏0
  • Android 回车换行的持久化

    摘要:问题解决方法依然使用上述两个,不过在调用之前先对目标进行编码解码,如和方法将带有特殊字符的写进,使用的时候读出方法使用字节流进行处理但是该方法有一个不足之处,见读文件方法的注释。 问题发现:从后台获取文字信息的时候,通过抓包发现含有rn换行符,显示在TextView上能够正确的换行,但是通过如下方法将String写进File,再次使用的时候从File中读取的时候会发现不再有换行效果。 ...

    Donne 评论0 收藏0

发表评论

0条评论

brianway

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<