您的位置:首页 > 其它

常用文件存储方法参考

2016-03-15 14:40 295 查看
Android中的文件存储主要分为两种:内部存储和外部存储

内部存储:系统自带存储空间,类似电脑的硬盘,一般比较小,但是访问稳定,安全性高,其他应用不可以随意访问,文件随应用卸载删除,在机身内存不足的时候文件可能会被删除

外部存储:系统外接的存储空间,类似电脑外接的移动硬盘,一般容量比较大,但是不一定可用,安全性不高,其他应用可随意访问,SDCard/Android/data/包名目录下的文件随应用卸载删除,其他目录下自建的目录和文件不会

基本操作:

1,如果使用外部存储,需要申请权限(API 19/Android 4.4以后可以不用申请此权限)

<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
/>

2,使用外部存储前先判断是否可用

/**
* Check if the primary "external" storage device is available.
*
* @return
*/
public static boolean hasSDCardMounted() {
String state = Environment.getExternalStorageState();
if (state != null && state.equals(Environment.MEDIA_MOUNTED)) {
return true;
} else {
return false;
}
}


3,通过File对象的getUsableSpace获取分区可用空间大小来判断和调整应用使用空间大小

4,路径规律

($rootDir)
+- /data                -> Environment.getDataDirectory()
|   |
|   |   ($appDataDir)
|   +- data/com.srain.cube.sample
|       |
|       |   ($filesDir)
|       +- files            -> Context.getFilesDir() / Context.getFileStreamPath("")
|       |       |
|       |       +- file1    -> Context.getFileStreamPath("file1")
|       |   ($cacheDir)
|       +- cache            -> Context.getCacheDir()
|       |
|       +- app_$name        ->(Context.getDir(String name, int mode)
|
|   ($rootDir)
+- /storage/sdcard0     -> Environment.getExternalStorageDirectory()
|                       / Environment.getExternalStoragePublicDirectory("")
|
+- dir1             -> Environment.getExternalStoragePublicDirectory("dir1")
|
|   ($appDataDir)
+- Andorid/data/com.srain.cube.sample
|
|   ($filesDir)
+- files        -> Context.getExternalFilesDir("")
|   |
|   +- file1    -> Context.getExternalFilesDir("file1")
|   +- Music    -> Context.getExternalFilesDir(Environment.Music);
|   +- Picture  -> ... Environment.Picture
|   +- ...
|
|   ($cacheDir)
+- cache        -> Context.getExternalCacheDir()
|
+- ???


参考:http://www.tuicool.com/articles/AvUnqiy
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: