Android存储路径你了解多少?
2017-03-21 12:48
218 查看
在了解存储路径之前,先来看看Android QQ的文件管理界面,了解一下QQ的数据文件路径来源,到底是来源于什么地方?
手Q文件管理对应存储目录
我的文件:是指放在QQ指定目录下的文件:
/tencent/QQfile_recv/(顺便说一下微信的存储目录:
/tencent/MicroMsg/Download/)
手机内存:其实是内部存储的根目录,在ES文件浏览器对应的是根目录,路径为:
Environment.getDataDirectory().getParentFile()
SD卡:这里的SD卡是指内置的SD卡,路径为:
Environment.getExternalStorageDirectory()
扩展卡内存:外置SD卡
手机存储
手机分为内部存储和外部存储1、内部存储
主要方法 | 路径 |
---|---|
Environment.getDataDirectory() | /data |
Environment.getDownloadCacheDirectory() | /cache |
Environment.getRootDirectory() | /system |
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 |
那什么是私有目录呢?
就是在外部存储的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 |
(2)扩展卡内存
扩展内存就是我们插入的外置SD卡,获取扩展内存的路径有点难度,不过Google很牛逼,哈哈,代码如下:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | 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; } |
路径测试:
1 2 3 | Log.e("cwj", "外置SD卡路径 = " + getStoragePath(this)); Log.e("cwj", "内置SD卡路径 = " + Environment.getExternalStorageDirectory().getAbsolutePath()); Log.e("cwj", "手机内存根目录路径 = " + Environment.getDataDirectory().getParentFile().getAbsolutePath()); |
本文标题:Android存储路径你了解多少?
文章作者:feifei
发布时间:2017-03-17, 15:27:33
最后更新:2017-03-17, 15:33:58
原始链接:http://yoursite.com/2017/03/17/Android存储路径你了解多少/
许可协议: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。
相关文章推荐
- Android存储路径你了解多少
- Android存储路径你了解多少?
- 转:你对存储性能了解多少?
- Android 中存储路径
- android获取相机默认存储路径的最后一张照片
- android获取扩展存储路径,TF卡、U盘等
- 【android路径写法以及存储】
- 深入了解Android中文件路径问题
- 安卓各文件存储路径汇总(Android file path)
- 安卓各文件存储路径汇总(Android file path)
- Android 系统给应用分配的数据存储路径和SD卡的使用
- Android手机自带内部存储路径的获取
- Android中图片URI如何转换成对应的存储路径
- Android获取多存储路径
- android 获得指定路径下可用存储大小
- android获取外部存储和内部存储路径
- Android 路径与存储设备相关
- Android 手机内外存储路径
- android 拍照指定存储路径 检查SD卡状态
- Android 获取SD路径,存储空间大小的方法