某些设备(例如我的Nexus 4)没有用于SD卡的外部插槽。而是有一个名为/sdcard/的根文件夹,其处理方式相同。但是我还找到了所有指向相同文件的其他路径-必须进行某种重定向(我认为在Linux中这称为符号链接)。

所有这些路径都包含相同的文件:

/sdcard/
/storage/sdcard0/
/storage/emulated/0/
/storage/emulated/legacy/


哪个路径是“实际”路径?那其他路径呢?它们的用途是什么,为什么存在?

#1 楼

推荐的讲座:为什么/ sdcard /在4.2中变成/ sdcard / 0 /? br />

/storage/emulated/0/:据我所知,这是指“模拟MMC”(“所有者”)。通常这是内部的。 “ 0”在这里代表用户,“ 0”是第一个用户,也就是设备所有者。如果您创建其他用户,则每个用户的这个数字都会增加。因此,此路径应将每个用户带到他的“部分”。

/storage/emulated/legacy/:根据Shywim的评论,这是指向...的符号链接。
/storage/emulated/0/(Android <4.0)

/sdcard/(Android 4.0+)



/mnt/sdcard:因为这里没有/storage/sdcard0吊坠(请参见在下面的注释中),在这种情况下,“ 0”代表设备(卡)本身。最终,一个人可以通过OTG将读卡器与另一个SDCard连接起来,然后变成/storage/sdcard0/(没有证据,只是一个猜测-但我会说一个很好的)可能会得出一个结论,也应该有一个legacy,没有(请参阅注释)-以我的假设,这里的数字与用户无关,而是与可能的多个卡相关,这完全有道理:“ 0 “将始终是设备卡插槽中的那个,因此这里不需要“旧版符号链接”。

评论


谢谢!不,没有/ storage / sdcard / legacy路径。

– Torben Gundtofte-Bruun
13年2月13日在14:25

奇怪。但这可能与以下事实有关:对真正的sdcard几乎没有任何权限(由于FAT文件系统不支持它们)。注意差异(/ sdcard0 /与/仿真/ 0),此处的“ 0”可能适用于通过读卡器和USB主机模式连接多个SD卡的情况。只是一个猜测,不是一个硬事实-但我会说一个好话。

– Izzy♦
13年2月13日在15:11

答案已相应更新:)

– Izzy♦
13年2月13日在15:17

/ sdcard /只是/ storage / sdcard0 /的符号链接。在4.0.0之前的版本中,它是/ mnt / sdcard /。

–马赛·哈雷(MatthieuHarlé)
13年2月14日在18:05

而且我认为,在Android 4.0+上,/ mnt / sdcard /是/ storage / sdcard0 /的符号链接?由于两者都可以在我的Nexus 4上浏览。

–怀特先生
13年4月12日在15:22

#2 楼

是的,这有点令人困惑,但是这些是内存布局的备用路径

/ mnt / sdcard0 /(内部虚拟SD卡)

,如果连接了更多设备,请打扰您,但命名因设备而异。

例如。 / mnt / sdcard1 /(SD插槽中的物理SD卡)

,但其他设备(例如通过适配器连接的USB闪存驱动器)可以称为

/ mnt / media_rw / usbdisk(android kitkat 4.4及更高版本?)
或/ mnt / usbdisk(软糖4.1-4.2)

评论


是的,命名可能取决于设备/制造商/ ROM。但通常,在所有这些情况下,/ mnt / *都是符号链接–“实际安装”位于/ storage之下:)

– Izzy♦
2014年12月1日13:21

好吧,我在mnt下也有一个shell文件夹。我经常切换设备ROM,因此,对于那些将外部SDcard用作默认内存的rom,shell文件夹将充当我的内部内存,而对于其他不将sdcard交换为内部内存的rom,shell甚至都不会出现成图片。它只会保留所有数据完整的文件夹中的位置,但不能由本地文件管理器访问。想知道到底是什么。

– Ali_Waris
2015年5月21日在5:46