【问题标题】:differences between /sdcard/emulated/0 and /sdcard/sdcard/emulated/0 和 /sdcard 之间的区别
【发布时间】:2013-11-29 19:31:35
【问题描述】:

我对一个奇怪的问题很生气。如果我在我的代码中创建一个文件夹为

directory_path = Environment.getExternalStorageDirectory()
                + "/" + context.getResources().getString(R.string.app_name);

directory = new File(directory_path);
if (!directory.exists()) {
    directory.mkdirs();
}

在 /sdcard/ 中创建了一个新文件夹。如果我尝试在 logcat directory_path 变量上打印,则路径不同:/storage/emulated/0/ 如果我去那个路径,我发现另一个文件夹与 /sdcard/ 上创建的文件夹同名。这对我来说是个问题,因为当我尝试将一些数据写入该文件夹时,所有内容都进入 /storage/emulated/0 上的一个,而另一个(即我想要使用的文件夹)保持为空。 为什么?

【问题讨论】:

  • 您找到答案了吗?似乎 Environment.getExternalStorageDirectory().getPath() 在 4.2 上不起作用

标签: android directory android-external-storage


【解决方案1】:

/storage/emulated/0/:据我所知,这是指“模拟 MMC”(“所有者部分”)。通常这是内部部分。“0”代表 对于这里的用户,“0”是第一个用户,也就是设备所有者。如果你 创建更多用户,这个数字将随着每个用户增加。

/storage/emulated/legacy/ 和之前一样,但指向的部分 当前工作的用户(对于所有者,这将是

的符号链接

/storage/emulated/0/)。所以这条路径应该把每个用户带到他的 “部分”。

/sdcard/:根据 Shywim 的评论,这是指向...的符号链接。

/mnt/sdcard (Android

/storage/sdcard0 (Android 4.0+)

更多详情您可以访问stackexchange

【讨论】:

    【解决方案2】:

    您是否尝试过读回数据? /storage/emulated/0/ 是 JB 中引入的新路径,用于支持平板电脑上的多个用户。但只要您使用Environment.getExternalStorageDirectory() 访问外部文件,它们的实际驻留位置并不重要。

    这里有一些附加信息:https://android.stackexchange.com/questions/35541/why-did-sdcard-turn-into-sdcard-0-with-4-2

    【讨论】:

    • 好的,但是我怎样才能在我的应用程序上跳过这种差异化呢?我不想使用 /storage/emulated/0 ,但是我在 /storage 中为我的应用程序创建的文件夹
    • /storage/emulated/0 下的文件夹你应该使用的存储空间。
    猜你喜欢
    • 1970-01-01
    • 2016-01-08
    • 2014-10-09
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    • 2011-06-15
    相关资源
    最近更新 更多