这两个文件都存在于sd卡上,但无论出于何种原因,exists()
都会为png文件返回false。
// String path = "/mnt/sdcard/Android/data/com.gemoro.toffer/cache/1551619351/0/foto/-921042926.png";
String path = "/mnt/sdcard/Android/data/com.gemoro.toffer/cache/1551619351/0/foto/-1200240592.pdf";
File file2 = new File(path);
if (null != file2) {
if (file2.exists()) {
LOG.x("file exists");
} else {
LOG.x("file does not exist");
}
}
现在,我已经看过了表达式file.exists()
的底层是什么,它的作用是:
public boolean exists() {
return doAccess(F_OK);
}
private boolean doAccess(int mode) {
try {
return Libcore.os.access(path, mode);
} catch (ErrnoException errnoException) {
return false;
}
}
可能是方法结束时抛出异常并返回false?
如果是这样
- 我该怎么做?
- 什么其他选项来检查如果一个文件存在于这sd卡是可用的?
谢谢
4条答案
按热度按时间unhi4e5o1#
1您需要获得设备的许可
将此添加到AndroidManifest.xml
2获取外部存储目录
3最后,检查文件
注意:filename是sd卡中的路径,不是root中的路径。
例如:你想找到
然后文件名是
.
rqenqsqc2#
请尝试此代码。希望对你有帮助。我只使用这个代码。它的工作很好,我找到文件是否存在。请试着让我知道。
kmynzznz3#
检查USB存储是否未连接到PC。由于Android设备连接到PC作为存储的文件是不可用的应用程序和你得到FALSE到File.Exists().
huus2vyu4#
检查文件是否存在于内部存储器中
示例:/storage/emulated/0/FOLDER_NAME/FILE_NAME.EXTENTION
1.检查权限(写入存储)
1.并检查文件是否存在
public static boolean isFilePresent(String fileName) { return getFilePath(fileName).isFile(); }
1.从文件名获取文件
public static File getFilePath(String fileName){ String extStorageDirectory = Environment.getExternalStorageDirectory().toString(); File folder = new File(extStorageDirectory, "FOLDER_NAME"); File filePath = new File(folder + "/" + fileName); return filePath; }