Android手机存储路径
手机存储
手机分为内部存储和外部存储
1、内部存储
主要方法 | 路径 |
---|---|
Environment.getDataDirectory() | /data |
Environment.getDownloadCacheDirectory() | /cache |
Environment.getRootDirectory() | /system |
这里的内部存储对应的就是手机QQ的手机内存,路径为
Environment.getDataDirectory().getParentFile()
就是根目录,这个目录下还有一些私密的数据,比如:databases(数据库)、shared_prefs(SharedPreferences)等
注:没有root的手机不能打开该文件夹
2、外部存储
外部存储又分为SD卡和扩展卡内存
(1)SD卡
获取路径方式是
Environment.getExternalStorageDirectory() /storage/sdcard0
方法 | 路径 |
---|---|
Environment.getExternalStoragePublicDirectory(DIRECTORY_ALARMS) | /storage/sdcard0/Alarms |
Environment.getExternalStoragePublicDirectory(DIRECTORY_DCIM) | /storage/sdcard0/DCIM |
Environment.getExternalStoragePublicDirectory(DIRECTORY_DOWNLOADS) | /storage/sdcard0/Download |
Environment.getExternalStoragePublicDirectory(DIRECTORY_MOVIES) | /storage/sdcard0/Movies |
Environment.getExternalStoragePublicDirectory(DIRECTORY_MUSIC) | /storage/sdcard0/Music |
Environment.getExternalStoragePublicDirectory(DIRECTORY_NOTIFICATIONS) | /storage/sdcard0/Notifications |
Environment.getExternalStoragePublicDirectory(DIRECTORY_PICTURES) | /storage/sdcard0/Pictures |
Environment.getExternalStoragePublicDirectory(DIRECTORY_PODCASTS) | /storage/sdcard0/Podcasts |
Environment.getExternalStoragePublicDirectory(DIRECTORY_RINGTONES) | /storage/sdcard0/Ringtones |
上面的九个方法对应的就是SD卡的九大公有目录,Google官方建议我们数据应该存储在私有目录下,不建议存储在公有目录下或其他地方
那什么是私有目录呢?
就是在外部存储的App的包名下,如:
/storage/emulated/0/Android/data/cwj.test(包名)/files/test
方法 | 路径 |
---|---|
getExternalFilesDir() | /storage/emulated/0/Android/data/cwj.test(包名)/files/test |
getExternalCacheDir | /storage/emulated/0/Android/data/cwj.test(包名)/cache/test |
一般情况下有包名的路径我们都是调用Context中的方法来获得,没有包名的路径,我们直接调用Environment中的方法获得。
(2)扩展卡内存
扩展内存就是我们插入的外置SD卡,获取扩展内存的路径有点难度,不过Google很牛逼,哈哈,代码如下:
private static String getExtendedMemoryPath(Context mContext) { StorageManager mStorageManager = (StorageManager) mContext.getSystemService(Context.STORAGE_SERVICE);Class<?> storageVolumeClazz = null;try {storageVolumeClazz = Class.forName("android.os.storage.StorageVolume");Method getVolumeList = mStorageManager.getClass().getMethod("getVolumeList");Method getPath = storageVolumeClazz.getMethod("getPath");Method isRemovable = storageVolumeClazz.getMethod("isRemovable");Object result = getVolumeList.invoke(mStorageManager);final int length = Array.getLength(result);for (int i = 0; i < length; i++) {Object storageVolumeElement = Array.get(result, i);String path = (String) getPath.invoke(storageVolumeElement);boolean removable = (Boolean) isRemovable.invoke(storageVolumeElement);if (removable) {return path;}}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();} catch (NoSuchMethodException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}return null;
}
该方法主要是通过反射的方式使用在sdk中被 隐藏 的类 StroageVolume 中的方法getVolumeList(),获取外部存储的路径。
路径测试:
Log.e("cwj", "外置SD卡路径 = " + getStoragePath(this));
Log.e("cwj", "内置SD卡路径 = " + Environment.getExternalStorageDirectory().getAbsolutePath());
Log.e("cwj", "手机内存根目录路径 = " + Environment.getDataDirectory().getParentFile().getAbsolutePath());
image.png
Android手机存储路径相关推荐
- android手机 存储路径设置在哪里找,Android 存储路径选择方法
Android能用来存储的地方有两个,一个是手机内置的存储空间,一个是外置的SD卡,内置的存储空间一般比较小,所以应用的缓存建议存储在外置的SD卡中. 在Android系统中如何获得存储的路径呢? p ...
- Android 手机存储及路径
目录 Android手机存储分类 二,内部存储 三,外部存储 私有目录 公有目录 四,数据删除 五,权限相关 android手机存储分类 分为:内部存储和外部存储 如何区分内部存储和外部存储:可以从物 ...
- android 各个存储路径及获取方法总结
1.各个路径 最长用到的就这三个位置 /data/data/包名/ /sdcard/Android/data/包名/ /sdcard/xxx 前两个是应用内部存储, 会随着app的卸载而自动删除, s ...
- Android 手机存储相关内容
应用操作的文件存储位置分为三个部分: 1.应用内部存储私有文件目录 2.应用外部存储私有文件目录 3.公有目录 Android手机存储分为两个部分:内部存储和外部存储,内部存储一般是手机自带的存储空间 ...
- 安卓android获取存储路径,Android系统的手机文件夹目录详解
一.文件夹 1./acct/ 系统回收站,删除的系统文件. 2./cache/ 缓存 3./data/ 用户的所有程序相关数据 app/ 所有用户安装的apk文件 app-private/ data/ ...
- android app根目录下cache,Android 手机存储目录详解
一.手机存储 (一)内置私有存储,手机需root后才能看到 获取路径的方法 1.getFilesDir() /data/data/[packagename]/files 文件缓存目录,一般存小的文件缓 ...
- android 本地存储路径,Android本地存储路径学习
一.前言: Android 中获取本地储存路径,有四个方法, getCacheDir().getFilesDir().getExternalFilesDir().getExternalCacheDir ...
- Android 手机存储 --------内存/外存/缓冲
每日一言:当下的付出,是明日的花卉. Android 存储路径 Log.d("内置SD卡路径:指定图片保存的路径",Environment.getExternalStorageDi ...
- android 手机存储 目录,android 62 手机存储目录的划分
android下应用程序的路径和javase不同,应用程序的数据要保存自己的文件夹里面 > > getFileDir(); 获取自己的文件夹 /data/data/包名(应用程序的名字)/ ...
最新文章
- mysql/mariadb centos7 修改root用户密码及配置参数
- Spring基础专题——第十一章(高级注解编程完结)
- HDU 3398 String
- Tiles Framework
- 微软官方的.NET Framework API 参考网址
- DIV+CSS布局,第五课,DOCTYPE的选择,零起点细说网站制作
- 字节 字符 utf-8 unicode 以及提交表单验证字符长度 .......
- 6个web前端核心技术,你学到哪个了呢?
- 难过的时候看一看 再坏能有多坏!
- 【参数辨识】六关节机械臂动力学参数辨识(上)
- 开放 接口 饿了么_饿了么口碑启动生态赋能计划 将在210城开放智慧餐厅业务合作窗口...
- 递归 非递归 遍历二叉树
- 人工智能究竟能否实现?
- 通信设计院,到底是干啥的?
- 【心理咨询师考试笔记】基础理论(六)——心理咨询概论
- 小明身高180cm,小刚身高165cm,计算两人的身高差
- pymysql 插入错误:Warning(1265, “Data truncated for column ‘XXXX‘ at row xxx“)
- stm32直流电机PID控制hal库(Cubemx)
- 美通社日历 | 会展及重要事件信息、企业财报发布,节假日备忘(3月22日—3月28日)...
- 你的网站为什么被黑?