我很生气,因为一个奇怪的问题。如果我在我的代码中创建一个文件夹
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 /上创建的文件夹名称相同。这对我来说是一个问题,因为当我尝试将一些数据写入该文件夹时,everithing进入/ storage / emulated / 0中的那个,而另一个(我想要使用的文件夹)保持为空。 为什么呢?
答案 0 :(得分:4)
您是否尝试过回读数据? / storage / emulated / 0 /是JB中引入的新路径,用于支持平板电脑上的多个用户。但只要您使用Environment.getExternalStorageDirectory()
访问外部文件,它们真正驻留在哪里并不重要。
以下是其他一些信息:https://android.stackexchange.com/questions/35541/why-did-sdcard-turn-into-sdcard-0-with-4-2
答案 1 :(得分:0)
/ storage / emulated / 0 /:据我所知,这是指“模拟的 MMC“(”所有者部分“)。通常这是内部的。”0“代表 对于这里的用户,“0”是第一个用户aka设备所有者。如果你 创建其他用户,这个数字将逐渐增加。
/ storage / emulated / legacy /和之前一样,但是指向了部分 当前工作的用户(对于所有者,这将是一个符号链接
/存储/模拟/ 0 /)。所以这条道路应该把每个用户带到他的身边 “份”。
/ sdcard /:根据Shywim的评论,这是一个符号链接......
/ mnt / sdcard(Android< 4.0)
/ storage / sdcard0(Android 4.0 +)
有关详细信息,请访问stackexchange