您的位置:首页 > 移动开发 > Android开发

android Internal storage 和External storage

2015-07-29 14:54 459 查看


android  Internal
storage 和[b]External storage:
[/b]


Internal storage:

总是可用的
这里的文件默认只能被我们的app所访问。
当用户卸载app的时候,系统会把internal内该app相关的文件都清除干净。
Internal是我们在想确保不被用户与其他app所访问的最佳存储区域。

External storage:

并不总是可用的,因为用户有时会通过USB存储模式挂载外部存储器,当取下挂载的这部分后,就无法对其进行访问了。
是大家都可以访问的,因此保存在这里的文件可能被其他程序访问。
当用户卸载我们的app时,系统仅仅会删除external根目录(getExternalFilesDir())下的相关文件。
External是在不需要严格的访问权限并且希望这些文件能够被其他app所共享或者是允许用户通过电脑访问时的最佳存储区域。


android  删除文件

在不需要使用某些文件的时候应删除它。删除文件最直接的方法是直接执行文件的
delete()
方法。

myFile.delete();

如果文件是保存在internal storage,我们可以通过
Context
来访问并通过执行
deleteFile()
进行删除

myContext.deleteFile(fileName);


Note: 当用户卸载我们的app时,android系统会删除以下文件:

所有保存到internal storage的文件。
所有使用getExternalFilesDir()方式保存在external storage的文件。
然而,通常来说,我们应该手动删除所有通过 getCacheDir()
方式创建的缓存文件,以及那些不会再用到的文件。

保存到Internal Storage --->保密性文件的位置

当保存文件到internal storage时,可以通过执行下面两个方法之一来获取合适的目录作为 FILE 的对象:

getFilesDir() : 返回一个File,代表了我们app的internal目录。
getCacheDir() : 返回一个File,代表了我们app的internal缓存目录。请确保这个目录下的文件能够在一旦不再需要的时候马上被删除,并对其大小进行合理限制,例如1MB
。系统的内部存储空间不够时,会自行选择删除缓存文件。
可以使用File() 构造器在那些目录下创建一个新的文件,如下:

File file = new File(context.getFilesDir(), filename);


Note: 我们的app的internal storage
目录以app的包名作为标识存放在Android文件系统的特定目录下[data/data/com.example.xx]。 从技术上讲,如果文件被设置为可读的,那么其他app就可以读取该internal文件。然而,其他app需要知道包名与文件名。若没有设置为可读或者可写,其他app是没有办法读写的。因此我们只要使用了MODE_PRIVATE ,那么这些文件就不可能被其他app所访问。

相关链接:
http://hukai.me/android-training-course-in-chinese/basics/data-storage/files.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息