若是应用程序须要外部文件资源,那么能够经过将其放置在项目层次结构的 res/raw
文件夹中,从而在本身的分发中包含它。java
Resources r = getResources(); InputStream file = r.openRawResource(R.raw.filename);
Android 下提供了两种建立文件对象:getDir
,getExternalFilesDir
,两个方法都返回一个 File 对象,每一个对象都有指向内部或外部存储的目录路径。当应用程序被卸载后,存储在这些目录下的文件都将被删除。android
以上两种方法都接收一个字符串参数,指定用于存放文件的子路径,在 Environment 类中引入了许多 DIRECTORY_[Category]字符串常量,这些常量用来表示标准目录名称,例如:下载目录、图片目录、影视目录、音乐目录、拍照目录缓存
存储在应用程序文件夹中的文件应该市特定于父应用程序的并且一般不会被媒体扫描。ide
getExternalFilesDir 方法是在 API Level 8 中引入的。要想支持较早的平台版本,能够调用
Environment.getExternalStorageDirectory()
获取外部存储根路径。
最好在应用程序本身的子目录下存储特定于该应用程序的数据,即:/android/data/data/Your Package Path/files
若是使用上面方式,当应用程序被卸载时不会将自动删除该应用程序的文件。code
Android 提供了 openFileInput
和 openFileOutput
方法来简化从应用程序沙箱中的文件读取和写入数据流。
建立 FileOutputStream 时,若是你指定的文件名不存在,Android 会为你建立。对于已经存在的文件的默认行为就是覆盖它;想要在文件末尾追加内容,能够指定模式为 Context.MODE_APPEND
。
默认状况下,使用 openFileOutput
方法建立的文件对于调用程序市私有的,其余应用程序都没法访问。在不一样应用程序间共享文件的标准方式是使用一个 Context Provider。视频
Android 提供了一个可管理的内部缓存,分别调用 getCacheDir
和 getExternalCacheDir
方法能够从当前上下文中访问它们。存储在缓存中的文件,在应用程序被卸载时都会被删除。当系统运行在低可用存储空间时,存储在内部缓存中的文件可能被系统所删除;存储在外部缓存中的文件则不会被删除。对象
这两种状况下,这是用来监控和管理缓存的大小和寿命很好的方式,当超出合理的最大缓存的大小的时候去删除文件。图片
API Level 8 还提供了一个便捷的方法 Environment.getExternalStoragePublicDirectory,能够用来找到存储应用程序文件的路径。方便返回每一个类型文件的存储路径。
下面是 Environment 经常使用文件类型的常量:资源