常用文件存储方法参考

来源:互联网 发布:菲尼克斯之光 知乎 编辑:程序博客网 时间:2024/06/06 05:33

Android中的文件存储主要分为两种:内部存储和外部存储

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

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

基本操作:

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

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

<uses-permissionandroid: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

0 0