Java 为什么getExternalStorageDirectory返回我的手机';s根存储,而不是SD卡?
我正在尝试读取手机SD卡上的文件夹,路径为Java 为什么getExternalStorageDirectory返回我的手机';s根存储,而不是SD卡?,java,android,Java,Android,我正在尝试读取手机SD卡上的文件夹,路径为\weights\input。Android的Environment.getExternalStorageDirectory().toString()返回/storage/emulated/0,该路径的isDirectory()返回true。但当我执行以下代码时: File weights = Environment.getExternalStorageDirectory(); List<File> inputs = getListFiles
\weights\input
。Android的Environment.getExternalStorageDirectory().toString()
返回/storage/emulated/0
,该路径的isDirectory()
返回true。但当我执行以下代码时:
File weights = Environment.getExternalStorageDirectory();
List<File> inputs = getListFiles(weights);
File weights=Environment.getExternalStorageDirectory();
列表输入=getListFiles(权重);
列表inputs
包含手机内部存储器中的所有文件,而不是SD卡,因此当我在inputs
中查找目录时,我的应用程序失败
为什么会这样?顺便说一句,我完全是一个Android和Java新手。完全正确。我遇到了类似的问题,我尝试在最后添加
/
。您可以尝试以下操作:
/weights/input/
而不是
/weights/input
编辑:
编辑后,我发现:
getExternalStorageDirectory
用于返回所设置的内容
作为设备环境中的“外部存储器”:
public static File getExternalStorageDirectory() {
return EXTERNAL_STORAGE_DIRECTORY;
}
而外部存储\u目录
是:
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(字符串类型)
需要
以下字符串之一:
目录音乐、目录播客、目录铃声、目录警报、目录通知、目录图片、,
目录电影、目录下载或目录DCIM可能不是
空。
因此,它并不意味着返回sd卡根
另一种选择:
最后,getExternalStorageState()
将返回文件系统
安装在/mnt/sdcard/
中。根据此答案中的Commonware:
,没有办法直接
获取外部SD卡(如果存在)
另一种方法是检查isExternalStorageRemovable()
和
如果为false,请提供一个手动选项
来源:尝试添加
/weights/input/
就在一小时前,我遇到了同样的问题,尝试随机添加/
,结果成功了!你能告诉我目录中有多少个文件吗?13个文件,但这个数字是可变的。那有什么关系?很抱歉,那是个错误。最后的/不知何故被剥离了,并且isDirectory
仍然返回false。但是在我的例子中,这非常好。等等,我会告诉你我在我的项目中做了什么。嘿,你在menifest中添加权限了吗?您必须授予读取外部存储的权限。这可能是它给出false的原因。是的,我有:
您想从该目录中读取的文件名是什么?您确定input
是一个目录吗?如果是,请参阅编辑。