如何检查安卓存储中是否存在已知的uri文件?
文件 uri 是已知的,例如
`file:///mnt/sdcard/Download/AppSearch_2213333_60.apk`
我想检查这个文件是否可以在后台打开,怎么办?
文件 uri 是已知的,例如
`file:///mnt/sdcard/Download/AppSearch_2213333_60.apk`
我想检查这个文件是否可以在后台打开,怎么办?
检查路径文件是否存在,如下所示:
File file = new File("/mnt/sdcard/Download/AppSearch_2213333_60.apk" );
if (file.exists()) {
//Do something
}
请记住,要删除“file://”等内容,否则请使用:
File file = new File(URI.create("file:///mnt/sdcard/Download/AppSearch_2213333_60.apk").getPath());
if (file.exists()) {
//Do something
}
此外,您必须在AndroidManifest中为您的应用程序设置适当的权限.xml才能访问SD卡:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
我可能来晚了一点,但我正在寻找类似问题的解决方案,并最终能够为所有可能的边缘情况找到解决方案。解决方案如下:
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错误地表示该文件存在。