Android 开发 存储目录的详解
简介
- Android设备,有3个地方的文件存储位置,他们分别是:
- 内部存储空间(用户无法浏览到此目录)
- 外部存储空间(就是手机自身的文件管理目录,用户可以浏览)
- SD卡的存储空间(需要插入T卡)
- SharedPreferences目录
- 存储数据库DB目录
内部存储空间
内部存储空间的获取都需要使用Context.
方法
getFilesDir();
对应内部存储的路径为: data/data/packagename/files
String filesDir = getApplicationContext().getFilesDir().getPath();
getCacheDir();
对应内部存储的路径为:data/data/packagename/cache ,cache是缓存的意思,这些文件一旦设备内部存储空间不足时,这些保存在cache下的文件会删除,不要指望系统为你删除,一般需要自己设定阈值,一旦系统满时,系统也会删掉cache!---- 一般聊天记录都会使用
String cacheDir = getApplicationContext().getCacheDir().getPath();
处理文件方法
openFileInput();和openFileOutput();
这2个方法对data/data/packagename/files目录下操作文件
fileList();
方法是用来列出该data/data/packagename/files目录下的所有文件
deleteFile(String name);
用来删除该files目录下的文件
外部存储空间
外部存储空间有2种不同目录的文件路径,他们分别需要使用Context和Environment来获取,下面我们逐个介绍获取方式与对应路径
需要使用Context获取方法
使用上下文获取的路径主要是/android/data/你的包名/ 此目录下的路径
getExternalCacheDir();
对应外部存储路径:/storage/emulated/0/Android/data/packagename/cache 此方法为获取cache缓存文件
String externalCacheDir = getApplicationContext().getExternalCacheDir().getPath();
getExternalCacheDirs();
对应外部存储路径:/storage/emulated/0/Android/data/packagename/cache 此方法为获取cache下所以文件数组集合
File[] externalCacheDirs = getApplicationContext().getExternalCacheDirs();
getExternalFilesDir(String type);
对应外部存储路径:/storage/emulated/0/Android/data/packagename/files 此方法获取files文件下的指定文件,这里的参数可以传入null也可以传入一个文件名
String externalFilesDir = getApplicationContext().getExternalFilesDir(null).getPath();
getExternalFilesDirs(String type);
对应外部存储路径:/storage/emulated/0/Android/data/packagename/files 此方法获取files文件指定目录的文件数组集合,这里的参数可以传入null也可以传入一个文件名
File[] externalFilesDirs = getApplicationContext().getExternalFilesDirs(null);
getExternalMediaDirs();
对应外部存储路径:/storage/emulated/0/Android/media/packagename 此方法获取包名路径下的文件数组集合
File[] externalMediaDirs = getApplicationContext().getExternalMediaDirs();
需要使用Environment获取方法
getExternalStorageState();
获取sd卡状态,此方法返回的是String类型,一共有以下几种类型:
- MEDIA_UNKNOWN SD卡未知
- MEDIA_REMOVED SD卡移除
- MEDIA_UNMOUNTED SD卡未安装
- MEDIA_CHECKING SD卡检查中,刚装上SD卡时
- MEDIA_NOFS SD卡为空白或正在使用不受支持的文件系统
- MEDIA_MOUNTED SD卡安装
- MEDIA_MOUNTED_READ_ONLY SD卡安装但是只读
- MEDIA_SHARED SD卡共享
- MEDIA_BAD_REMOVAL SD卡移除错误
- MEDIA_UNMOUNTABLE 存在SD卡但是不能挂载,例如发生在介质损坏
String externalStorageState = Environment.getExternalStorageState();
if (externalStorageState.equals(Environment.MEDIA_MOUNTED)){
//sd卡已经安装
}
getExternalStorageDirectory();
对应外部存储路径:/storage/emulated/0 此方法获取外部存储根目录路径
String externalStorageDirectory = Environment.getExternalStorageDirectory().getPath();
getExternalStoragePublicDirectory(String type);
获取外部存储的共享文件夹路径(就是拍照文件夹/下载文件夹/音乐文件夹这些系统的共享文件夹),使用的时候参数必需携带路径类型,且不能为null.
以相机DCIM目录为例子对应获取的路径为:/storage/emulated/0/DCIM
String externalStoragePublicDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath();
- DIRECTORY_MUSIC 音乐目录
- DIRECTORY_PODCASTS 播客目录
- DIRECTORY_RINGTONES 铃声目录
- DIRECTORY_ALARMS 警报(闹钟/定时器)铃声目录
- DIRECTORY_NOTIFICATIONS 提示音目录
- DIRECTORY_PICTURES 图片目录
- DIRECTORY_MOVIES 电影目录
- DIRECTORY_DOWNLOADS 下载目录
- DIRECTORY_DCIM 相机拍照或录像文件的存储目录
- DIRECTORY_DOCUMENTS 文件文档目录
系统存储空间
getRootDirectory();
对应获取系统分区根路径:/system 此方法是获取系统根目录路径,返回包含核心Android操作系统的“系统”分区的根目录,始终以只读方式显示和安装。
String rootDirectory = Environment.getRootDirectory().getPath();
getDataDirectory();
对应获取用户数据目录路径:/data 返回用户数据目录
String dataDirectory = Environment.getDataDirectory().getPath();
getDownloadCacheDirectory();
对应获取用户缓存目录路径:/data/cache 返回下载/缓存内容目录
String downloadCacheDirectory = Environment.getDownloadCacheDirectory().getPath();
Android 开发 存储目录的详解的更多相关文章
- Android开发:程序目录结构详解
HelloWorld程序的目录结构概述 我们可以在文件夹中看到,HelloWorld程序的目录主要包括:src文件夹.gen文件夹.Android文件夹.assets.res文件夹. AndroidM ...
- Android开发——事件分发机制详解
0. 前言 转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52566965 深入学习事件分发机制,是为了解决在Android开发中 ...
- Android开发之位置定位详解与实例解析(GPS定位、Google网络定位,BaiduLBS(SDK)定位)
在android开发中地图和定位是很多软件不可或缺的内容,这些特色功能也给人们带来了很多方便.定位一般分为三种发方案:即GPS定位.Google网络定位以及基站定位 最简单的手机定位方式当然是通过GP ...
- Android开发 ExpandableListView 可折叠列表详解
前言 在需要实现一个List的item需要包含列表的时候,我们就可以选择ExpandableListView. 其实这个View的原始设计还是ListView的那套.就是增加2层的ListView而已 ...
- Android源码目录结构详解(转载)
转自:http://blog.csdn.net/xiangjai/article/details/9012387 在学习Android的过程中,学习写应用还好,一开始不用管太多代码,直接调用函数就可以 ...
- 最全的Android源码目录结构详解
Android 2.1|-- Makefile|-- bionic (bionic C库)|-- bootable (启动引 ...
- 最全的Android源码目录结构详解(转)
Android 2.1|-- Makefile|-- bionic (bionic C库)|-- bootable (启动 ...
- 最全的Android源码目录结构详解【转】
本文转载自:http://blog.csdn.net/yangwen123/article/details/8055025 Android 2.1|-- Makefile|-- bionic ...
- Android源码目录结构详解
Android 4.0|-- Makefile|-- bionic (bionic C库)|-- bootable (启动引导相关代码)|-- build (存放系统编译规则及generic等基础开发 ...
随机推荐
- windows下用XShell远程控制ubuntu时连接失败
主机和Ubuntu可以相互Ping通,但是XShell远程控制失败. 查看Ip地址方法:ifconfig 解决方案: 1.查看,关闭防火墙状态:sudo ufw disable 2.开放22端口:su ...
- HDU 6181:Two Paths(次短路)
Two Paths Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 153428/153428 K (Java/Others) Total S ...
- Development descriptor
部署描述符指的是配置文件对于一个假象部署到一些容器/发动机. 在Java平台,企业版部署描述符描述组件.模块或应用程序(例如web应用程序或者企业应用程序)应该被部署.它指导部署工具部署具有特定容器选 ...
- 跳台阶(JAVA)
跳台阶 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 思路:典型的动态规划问题,动态规划问题最关键的是把事件中的各种情形抽象为状态,然后找到前后 ...
- cookie 就是一些字符串信息
什么是 Cookie “cookie 是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie.你可以使用JavaScript 来创建和取回cookie 的 ...
- Python 反射(reflection)
反射是指通过字符串映射或修改程序运行时的状态.属性.方法, 有以下4个方法 1.getattr(object, name, default = None) 根据字符串获取 obj 对象里对应 str ...
- 剑指offer 6.查找和排序 旋转数组的最小数字
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋 ...
- HanLP vs LTP 分词功能测试
文章摘自github,本次测试选用 HanLP 1.6.0 , LTP 3.4.0 测试思路 使用同一份语料训练两个分词库,同一份测试数据测试两个分词库的性能. 语料库选取1998年01月的人民日报语 ...
- httpd日志格式
日志的缺省格式有如下几种: LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{U ...
- Thread.Abort 方法
[SecurityPermissionAttribute(SecurityAction.Demand, ControlThread = true)] public void Abort() 在调用此方 ...