您的位置:首页 > 移动开发 > Android开发

Android 中外部存储在不同android版本上面的位置

2016-03-19 17:22 465 查看
Android 底层是Linux的内核,所以默认的外部存储还是在mnt/sdcard

外部存储分为公共目录和私有目录,获取方法如下:

外部共有目录

路径名如何得到
共有的路径: /mnt/sdcard通过Environment.getExternalStorageDirectory得到
公共文件夹 音乐文件夹的目录/mnt/sdcard/Music 通过Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC)得到
外部私有目录:

路径名如何得到
路径/mnt/sdcard/Android/data/包名/cache 通过getExternalCacheDir得到
路径/mnt/sdcard/Android/data/包名/files通过getExternalFilesDir得到
路径/mnt/sdcard/Android/data/包名/files/images通过getExternalFilesDir("images")得到

通过代码来得到相应的外部存储的位置:

//***************************************外部存储****************************************
Log.d("Kodulf","***************************************外部存储-外部共有目录**************************************** ");

//获取外部存储的文件夹
File directory = Environment.getExternalStorageDirectory();
Log.d("Kodulf","Environment.getExternalStorageDirectory ="+directory.getPath());

//获取外部存储的公共的 音乐文件夹
File externalStoragePublicDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC);
Log.d("Kodulf", "Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC) =" + externalStoragePublicDirectory.getPath());

Log.d("Kodulf","***************************************外部存储-外部私有目录**************************************** ");
//相当于内部存储的getCacheDir()
File externalCacheDir = getExternalCacheDir();
Log.d("Kodulf", "getExternalCacheDir =" + externalCacheDir.getPath());
//File[] externalCacheDirs = getExternalCacheDirs(); API 19才有的


下面是在3个不同的android 版本中的执行:

注意:因为没有root ,所以在DDMS中第二个和第三个没有显示/storage/emulated/0这个路径

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

0:Android 2.3.3 API 10 的 模拟器上面

只有/sdcard 和/mnt/sdcard

而且/sdcard 还是链接到/mnt/sdcard上面的,所以最终存储在/mnt/sdcard中。



D/Kodulf: ***************************************外部存储-外部共有目录****************************************
D/Kodulf: Environment.getExternalStorageDirectory =/mnt/sdcard
D/Kodulf: Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC) =/mnt/sdcard/Music
D/Kodulf: ***************************************外部存储-外部私有目录****************************************
D/Kodulf: getExternalCacheDir =/mnt/sdcard/Android/data/tech.androidstudio.filedemo/cache
D/Kodulf: getExternalFilesDir =/mnt/sdcard/Android/data/tech.androidstudio.filedemo/files/images


1:Android 4.3 API 18 的三星手机,因为没有外部的存储卡,所以手机自动的模拟出来一个外部的存储。

/sdcard 和/mnt/sdcard 都是链接的/storage/emulated/legacy

包括一个/storage/sdcard0也是链接/storage/emulated/legacy

最终这个/storage/emulated/legacy 链接的是/mnt/shell/emulated/0 这个文件夹。



D/Kodulf: ***************************************外部存储-外部共有目录****************************************
D/Kodulf: Environment.getExternalStorageDirectory =/storage/emulated/0
D/Kodulf: Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC) =/storage/emulated/0/Music
D/Kodulf: ***************************************外部存储-外部私有目录****************************************
D/Kodulf: getExternalCacheDir =/storage/emulated/0/Android/data/tech.androidstudio.filedemo/cache
D/Kodulf: getExternalFilesDir =/storage/emulated/0/Android/data/tech.androidstudio.filedemo/files/images


2:Android 5.0.2 API 21 的MOTO X手机

和上面的三星手机非常类似,只是有一点区别就是

/storage/emulated/legacy 不再链接/mnt/shell/emulated/0 这个文件夹,但是里面的内容确实是一模一样的



D/Kodulf: ***************************************外部存储-外部共有目录****************************************
D/Kodulf: Environment.getExternalStorageDirectory =/storage/emulated/0
D/Kodulf: Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC) =/storage/emulated/0/Music
D/Kodulf: ***************************************外部存储-外部私有目录****************************************
D/Kodulf: getExternalCacheDir =/storage/emulated/0/Android/data/tech.androidstudio.filedemo/cache
D/Kodulf: getExternalFilesDir =/storage/emulated/0/Android/data/tech.androidstudio.filedemo/files/images


BTW: Android版本对应API Level
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: