我有一个非常简单的问题,但到目前为止我无法找到这个问题的答案。 “有没有办法在Android中找到 INTERNAL STORAGE DIRECTORY
和 EXTERNAL STORAGE DIRECTORY(SDCARD)
的绝对路径?”
请不要建议使用 Environment.getExternalStorageDirectory
,因为它通常会返回Android操作系统默认选择的内部存储或任何存储介质的路径。
有什么建议吗?
我有一个非常简单的问题,但到目前为止我无法找到这个问题的答案。 “有没有办法在Android中找到 INTERNAL STORAGE DIRECTORY
和 EXTERNAL STORAGE DIRECTORY(SDCARD)
的绝对路径?”
请不要建议使用 Environment.getExternalStorageDirectory
,因为它通常会返回Android操作系统默认选择的内部存储或任何存储介质的路径。
有什么建议吗?
这个问题之前在SO上已经被问过了,可以使用搜索功能查找。简单来说,“外部存储”更像是“共享存储”,它可能或者可能没有由实际的SD卡实现。有些设备有额外的SD卡,但不用作外部存储。如果您想要的是这个,目前没有公共API可用于访问其挂载位置,并且它因设备而异。您可以检查/proc/mount
以查看当前挂载了什么,然后进行操作。
/mnt/sdcard
,但这是普遍的吗? - Nathan Moos/mnt/sdcard
通常是外部存储的路径,但我认为它并不普遍。其他SD卡(例如Xoom或Iconia上的)则被挂载在其他位置。我看到过关于“次要外部存储”的参考资料,但在SDK中没有相应的API。 - Nikolay Elenkovhttps://source.android.com/devices/tech/storage/config-example.html
因此,要获取SD卡,您只需执行以下操作。String storagePath = System.getenv("SECONDARY_STORAGE");
if (storagePath == null) {
return null;
} else {
String[] storagePathArray = storagePath.split(":");
return storagePathArray[0];
}
你应该使用
Environment.getExternalStorageDirectory().getAbsolutePath()
/storage/extSdCard/
我通过终端找到了我的SD卡,并执行以下操作:
cd /storage/extSdCard/
一旦进入卡的根目录,我使用“ls”命令列出文件,以便验证其上存储的内容。 这就是我发现我的方法。希望它能帮助其他人。
我认为 /storage/sdcard0/ 用于内部SD卡,而 /storage/sdcard1/ 用于外部SD卡,如果有两个存储选项。 如果您要检查文件是否存在于任何一个SD卡中,您应该检查所有可能的路径。
String path;
if(new File("/storage/sdcard/yourpath").exist())
{
path="/storage/sdcard/yourpath";
}
else if(new File("/storage/sdcard0/yourpath").exists())
{
path="/storage/sdcard0/yourpath";
}
else if(new File("/storage/sdcard1/yourpath").exists())
{
path="/storage/sdcard1/yourpath";
}
String path=ExternalStorageDirectoryPath + "/foldername/";
字符串路径=ExternalStorageDirectoryPath + "/文件夹名称/";