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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值