常用文件存储方法参考
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,使用外部存储前先判断是否可用
3,通过File对象的getUsableSpace获取分区可用空间大小来判断和调整应用使用空间大小
4,路径规律
参考:http://www.tuicool.com/articles/AvUnqiy
内部存储:系统自带存储空间,类似电脑的硬盘,一般比较小,但是访问稳定,安全性高,其他应用不可以随意访问,文件随应用卸载删除,在机身内存不足的时候文件可能会被删除
外部存储:系统外接的存储空间,类似电脑外接的移动硬盘,一般容量比较大,但是不一定可用,安全性不高,其他应用可随意访问,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
相关文章推荐
- Linux常用的命令总结
- navicat连接MSSQL和ORACLE
- Delphi数据类型
- 2705: [SDOI2012]Longge的问题|欧拉函数
- 构建微服务-第一章-什么是微服务_005可组合性和可替代性优化
- ADT的配置
- 156.Evaluate the following SQL statement:
- 简述java序列化
- SQLdeveloper换成windows主题后不显示的情况
- (十)boost库之多线程
- iOS添加字体汇总
- CFS(完全公平调度)中的虚拟运行时间(vruntime)
- selenium 用java查找包含特定文本的位置
- JDK的下载
- linux终端拖动鼠标总是产生ctrl+c
- jquery 展开折叠效果
- Hadoop下大矩阵乘法Version2
- 自定义view(三)
- (九)boost库之文件处理filesystem
- 100msh interview