我尝试使用路径\weights\input
从手机的SD卡上的文件夹中读取。 Android' Environment.getExternalStorageDirectory().toString()
返回/storage/emulated/0
,该路径的isDirectory()
返回true。但是当我执行以下代码时:
File weights = Environment.getExternalStorageDirectory();
List<File> inputs = getListFiles(weights);
列表inputs
包含手机内部存储空间中的所有文件,而不是SD卡,因此当我在inputs
中查找目录时,我的应用程序失败。
这是为什么?顺便说一下,我完全是Android和Java的新手。完全。
答案 0 :(得分:6)
我有类似的问题,我尝试在最后附加/
。您可以尝试以下操作:
/weights/input/
而不是
/weights/input
修改强> 编辑后,我发现了这个:
实现
getExternalStorageDirectory
以返回所设置的内容 as&#34;外部存储&#34;在设备环境中:public static File getExternalStorageDirectory() { return EXTERNAL_STORAGE_DIRECTORY; }
和
EXTERNAL_STORAGE_DIRECTORY
是:private static final File EXTERNAL_STORAGE_DIRECTORY = getDirectory("EXTERNAL_STORAGE", "/sdcard"); static File getDirectory(String variableName, String defaultPath) { String path = System.getenv(variableName); return path == null ? new File(defaultPath) : new File(path); }
相反,
getExternalStoragePublicDirectory(String type)
需要 其中一个字符串:DIRECTORY_MUSIC,DIRECTORY_PODCASTS,DIRECTORY_RINGTONES,DIRECTORY_ALARMS,DIRECTORY_NOTIFICATIONS,DIRECTORY_PICTURES, DIRECTORY_MOVIES,DIRECTORY_DOWNLOADS或DIRECTORY_DCIM。 可能不会 空。强>
所以它并不意味着返回SD卡根。
替代方案:
最后,
getExternalStorageState()
将返回文件系统 安装在/mnt/sdcard/
。根据CommonsWare的回答: Find an external SD card location,没有办法直接 获取外部SD卡(如果它甚至存在)。另一种方法是检查
isExternalStorageRemovable ()
和 如果错误,请提供手动选项。
来源:This link.