android 各个存储路径及获取方法总结
最长用到的就这三个位置
- /data/data/包名/
- /sdcard/Android/data/包名/
- /sdcard/xxx
前两个是应用内部存储, 会随着app的卸载而自动删除, sdcard中其他的文件夹不会自动删除, 除非用户手动删除, 否则会一直存在, 换句话说就是垃圾.
Google官方建议把数据存储在 /sdcard/Android/data/包名/ 下.
路径获取方法
前两个应用内部存储通过 Context 来获取, 第三个作为外部存储是通过 Environment 类来获取. 注释为返回值.
/data/data/包名/
context.getFilesDir(); // /data/data/包名/files
context.getCacheDir(); // /data/data/包名/cache
/sdcard/Android/data/包名/
context.getExternalFilesDir(); // /sdcard/Android/data/包名/files
context.getExternalCacheDir(); // /sdcard/Android/data/包名/cache
/sdcard/xxx
// /storage/emulated/0
Environment.getExternalStorageDirectory();
// /storage/emulated/0/DCIM, 另外还有MOVIE/MUSIC等很多种标准路径
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
注意, 根据源码文档中说明, 获取外部存储时, 有可能会因为各种问题导致获取失败, 建议先使用 getExternalStorageState 来判断外部存储状态, 如果已挂载的话再存储.
在开发过程中,我们会经常需要操作手机的sd卡,在使用前,我们应该先判断sd卡的状态再使用
通过Environment.getExternalStorageState()方法我们可以获得sd卡的状态信息
返回的是一个string类型的状态量。
状态的参数用法如下
| sd卡状态 | 现象描述 | /mnt/sdcard目录存在否 | canWrite()返回 | canRead()返回 | 在/mnt/sdcard创建文件 | 在/mnt/sdcard创建文件夹 |
| MEDIA_MOUNTED | SD卡正常挂载 | 是 | true | true | 可 | 可 |
| MEDIA_REMOVED | sd卡不存在 | 是 | false | false | 不可 | 不可 |
| MEDIA_UNMOUNTED | sd卡存在,系统未挂载 | 是 | false | false | 不可 | 不可 |
| MEDIA_BAD_REMOVAL | sd卡在被挂载前,被暴力直接移除 |
|
false | false | 不可 | 不可 |
| MEDIA_SHARED | 存在sd卡,但未被挂载处于被通过usb共享内存状态中 | 是 | false | false | 不可 | 不可 |
| MEDIA_CHECKING | sd卡处于被检查状态 | 是 | false | false | 不可 | 不可 |
| MEDIA_MOUNTED_READ_ONLY | sd卡为只读状态 | 是 | false | true | 不可 | 不可 |
| MEDIA_NOFS | 1、sd卡存在为空白状态2、系统不支持 | 是 | false | false | 不可 | 不可 |
| MEDIA_UNMOUNTABLE | sd卡不能挂载 | 是 | false | false | 不可 | 不可 |
所需权限
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
android 各个存储路径及获取方法总结的更多相关文章
- 转:Android文件存储路径getFilesDir()与getExternalFilesDir的区别
作为一个开发者,我们经常需要通过缓存一些文件到SD卡中,常见的方式就是,通过: File sdCard = Environment.getExternalStorageDirectory(); 获取S ...
- Android数据存储的五种方法汇总
本文介绍Android中的5种数据存储方式. 数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用SharedPreferences存储数据 2 ...
- Android数据存储的5种方法
--使用SharedPreferences存储数据 --文件存储数据 --SQLite数据库存储数据 --使用ContentProvider存储数据 --网络存储数据 Preference,File, ...
- Docker 修改默认存储路径的一个方法
1. 前期安装创建centOS的虚拟机时发现自己对linux的挂载点不清楚, 造成挂载点的分配不太均匀,如图: root / 节点的大小设置的比较小 /home路径设置的一直比较大 但是docker ...
- Jupyter notebook文件默认存储路径以及更改方法
1.文件默认存储路径怎么查? 安装Anaconda后,新建文件的默认存储路径一般在C系统盘,那么路径是什么呢? 首先,新建一个.ipynb文件, 输入以下脚本,运行出的结果即是当前jupyter文件 ...
- Android手机自带内部存储路径的获取 (转)
转自:http://my.oschina.net/liucundong/blog/288183 我有一台中兴的Android手机,型号是 ZTE U930HD,手机没有插入外置SD卡(也就是Micro ...
- Android 项目中的资源获取方法
Android资源文件分类: Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.java里面自动生成该资源文件的ID,所以访问这种资源文件 ...
- web工程常用路径的获取方法
此文章是基于 搭建SpringMVC+Spring+Hibernate平台 一. 利用 Spring 取得web工程根路径 1. web.xml 中添加如下: <context-param> ...
- laravel各种路径的获取方法
若Route中有Route::get('home/test', 'HomeController@index')->name('test'); ①视图中的href跳转 一.<a href=& ...
随机推荐
- linux环境下安装python 3
说明: 在linux环境下,都默认安装python 2的环境,由于python3在python2的基础上升级较大,所以安装python 3环境用于使用最新的python 3的语法. 安装过程: 1.下 ...
- CentOS7优化打开文件句柄数,修改MariaDB允许最大连接数、允许最大插入数据库的数据大小。
修改服务器配置:vim /etc/systemd/system.conf查找并修改下列两行的值:DefaultLimitNOFILE=1024000DefaultLimitNPROC=1024000 ...
- Starting Jenkins bash: /usr/bin/java: 没有那个文件或目录
[root@localhost /]# systemctl status jenkins.service ● jenkins.service - LSB: Jenkins Automation Ser ...
- Qt开发经验小技巧81-90
Qt中的QColor对颜色封装的很完美,支持各种转换,比如rgb.hsb.cmy.hsl,对应的是toRgb.toHsv.toCmyk.toHsl,还支持透明度设置,颜色值还能转成16进制格式显示. ...
- (原)关于使用zoompad滤镜生成一个转场效果
之前在 http://bbs.chinaffmpeg.com/forum.php?mod=viewthread&tid=1294&extra=page%3D1 上分享过一个转场效果,今 ...
- Bootstrap Table 初始化设置
$('#ArbetTable').bootstrapTable({ url: '/Interface/GetData', //请求后台的URL(*) method: 'get', //请求方式(*) ...
- EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器解决方案之Nodejs调用bat或sh脚本
关于EasyDSS流媒体服务器 EasyDSS商用流媒体服务器解决方案是一套集流媒体点播.转码与管理.直播.录像.检索.时移回看于一体的一套完整的商用流媒体服务器解决方案,EasyDSS高性能RTMP ...
- html5 video标签播放视频流
从文件服务器读取音视频文件,以流的方式传给前台,并能够播放视频. 做了一个demo,用html5的video,audio标签实现. 后台实现代码: @GetMapping(value = " ...
- cordova调用第三方应用
cordova 帮助webapp 达到调用原生系统的功能 项目需求:在项目中调用系统中含有的第三方地图应用 需求其实分为两步: 1. 查找本地地图应用 2.成功调起本地应用 首先需要安装两个插件,安装 ...
- nginx deny 封IP
官方文档地址:http://nginx.org/en/docs/http/ngx_http_access_module.html#deny Syntax: deny address | CIDR | ...