文件uri是已知的,比如
`file:///mnt/sdcard/Download/AppSearch_2213333_60.apk`
我想检查这个文件是否可以在后台打开,怎么办?
原文由 Victor S 发布,翻译遵循 CC BY-SA 4.0 许可协议
文件uri是已知的,比如
`file:///mnt/sdcard/Download/AppSearch_2213333_60.apk`
我想检查这个文件是否可以在后台打开,怎么办?
原文由 Victor S 发布,翻译遵循 CC BY-SA 4.0 许可协议
我可能来晚了一点,但我一直在寻找类似问题的解决方案,最终能够找到所有可能的边缘情况的解决方案。解决方案如下:
boolean bool = false;
if(null != uri) {
try {
InputStream inputStream = context.getContentResolver().openInputStream(uri);
inputStream.close();
bool = true;
} catch (Exception e) {
Log.w(MY_TAG, "File corresponding to the uri does not exist " + uri.toString());
}
}
如果与 URI 对应的文件存在,那么您将有一个输入流对象可以使用,否则将抛出异常。
如果文件确实存在,请不要忘记关闭输入流。
笔记:
DocumentFile sourceFile = DocumentFile.fromSingleUri(context, uri);
boolean bool = sourceFile.exists();
确实处理了大多数边缘情况,但我发现如果文件以编程方式创建并存储在某个文件夹中,则用户然后访问该文件夹并手动删除该文件(在应用程序运行时),DocumentFile.fromSingleUri 错误地说该文件存在。
原文由 mang4521 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
检查路径的文件是否存在,如下所示:
请记住删除诸如“file://”之类的内容,否则使用:
您还必须在 AndroidManifest.xml 中为您的应用程序设置适当的权限才能访问 sdcard: