检查DocumentFile是否存在

时间:2016-03-14 10:41:49

标签: android filenotfoundexception documentfile

我使用DocumentFile检查文件元数据和存在。这是如此实现的:

DocumentFile df = DocumentFile.fromSingleUri(context, uri);
boolean exists = df.exists();

该文件的uri以前工作过,直到我故意在文件系统中手动删除文件,以查看应用程序将如何反应。现在这个堆栈跟踪出现在App:

03-14 11:33:08.559 27087-27097/? E/DatabaseUtils: Writing exception to parcel
  java.lang.IllegalArgumentException: Failed to determine if primary:Download/thefile.txt is child of primary:Download: java.io.FileNotFoundException: Missing file for primary:Download/thefile.txt at /storage/emulated/0/Download/thefile.txt
      at com.android.externalstorage.ExternalStorageProvider.isChildDocument(ExternalStorageProvider.java:326)
      at android.provider.DocumentsProvider.enforceTree(DocumentsProvider.java:198)
      at android.provider.DocumentsProvider.query(DocumentsProvider.java:489)
      at android.content.ContentProvider.query(ContentProvider.java:1017)
      at android.content.ContentProvider$Transport.query(ContentProvider.java:238)
      at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:112)
      at android.os.Binder.execTransact(Binder.java:453)
03-14 11:33:08.561 27046-27419/packagename W/DocumentFile: Failed query: java.lang.IllegalArgumentException: Failed to determine if primary:Download/thefile.txt is child of primary:Download: java.io.FileNotFoundException: Missing file for primary:Download/thefile.txt at /storage/emulated/0/Download/thefile.txt

没有崩溃App,每次我尝试使用DocumentFile时它都会生成这个堆栈跟踪。所以在最坏的情况下,这只是logcat中的一种刺激因素。

我希望使用FileNotFoundException来避免这个.exists()。我正在检查是否存在以避免使用不存在的文件。

在这种情况下推荐使用不同的功能吗?

1 个答案:

答案 0 :(得分:5)

我已经处理了这个烦恼太久了;你甚至无法包装它。我已经为这个错误的错误提交了错误报告:

https://code.google.com/p/android/issues/detail?id=241400&thanks=241400&ts=1489099169

添加支持,事情可以通过这种方式更快地修复。