如何在Xperia Z1上读取SD卡中的文件?
Environment.getExternalStorageDirectory()
指向内部记忆!
答案 0 :(得分:0)
根据Environment文档,外部存储目录传统上是SD卡,但它也可以作为内置存储实现在不同于受保护的内部存储,可以作为文件系统安装在计算机上。"
此外,"如果用户已在其计算机上安装此目录,已从设备中删除或发生其他一些问题,则该目录目前可能无法访问"。
要检查外部存储目录的状态,请使用以下函数:
Environment.getExternalStorageState();
上述功能的文档可用here。
您还可以通过以下功能检查外部存储器是否可拆卸(以及SD卡):
Environment.isExternalStorageRemovable();
如果外部存储是SD卡,它将返回true
。
要查找设备的SD卡路径,可以使用adb shell并使用以下命令:
adb shell 'echo ${SECONDARY_STORAGE%%:*}'
(Source)
This thread可能暗示了一个实际的答案,许多人都对此有所冲突。
答案 1 :(得分:0)
尝试
File dirs [] = getExternalFileDirs();
如果还有更多,最后一张将放在可移动卡上。你只能写入外部文件dir。但是读完整张卡片。只需从前面的路径中取出... / Android /....
答案 2 :(得分:0)
您可以使用以下代码获取外部存储卡路径
String path4 = System.getenv("SECONDARY_STORAGE");
你有路径::: / storage / ExtSdCard(你的外部SD卡名称)
答案 3 :(得分:-1)
我想使用外部SD卡需要使用它:
new File("/mnt/external_sd/")
OR
new File("/mnt/extSdCard/")
在你的情况下...
替换Environment.getExternalStorageDirectory()
适合我。您应该首先检查目录mnt中的内容,然后从那里开始工作..
您应该使用某种类型的选择方法来选择使用哪个SD卡:
File storageDir = new File("/mnt/");
if(storageDir.isDirectory()){
String[] dirList = storageDir.list();
//TODO some type of selecton method?
}