1

假设以下文件夹结构:

- root
-- Android
-- Downloads
-- ....
-- Test
--- Example
---- Dir1

鉴于下面列出的 Uri,如何获取位于/Test/Example路径中的目录的 DocumentFile,其中 Test 和 Example 是动态选择的目录?

Uri uri = Uri.parse("content://com.android.externalstorage.documents/tree/primary%3A/document/primary%3ATest%2FExample");
DocumentFile f = DocumentFile.fromTreeUri(context, uri);
f.findFile(context, "Dir1"); // Returns null, because the document file is for the primary storage directory
f.findFile(context, "Test"); // Returns the document file for /Test

我需要 /Test/Example 目录的 DocumentFile,因为我需要进一步遍历树并查找/检查是否存在其他目录,例如/Test/Example/Dir1/Dir2/test.txt,但在运行时我不知道目录的名称是什么。

4

1 回答 1

1

您仍然可以一次下一个目录:

DocumentFile rootDir = DocumentFile.fromTreeUri(context, uri);
if (rootDir != null) {
    DocumentFile testDir = rootDir.findFile(context, "Test");
    if (testDir != null) {
        DocumentFile exampleDir = testDir.findFile(context, "Example");
    }
}

当然,可能有一种更优雅的方法来执行此操作,具体取决于您如何获取运行时创建的目录的名称。

于 2021-02-25T06:32:33.617 回答