0

如果我们使用 Android API 来获取外部存储目录,我们会得到类似/storage/emulated/0. 如果我在同一文件上运行递归遍历,我会得到列出的所有文件和文件夹的列表。

所以,我想到了运行遍历,/storage认为它会返回所有存在的公共目录。但是,在运行相同的程序时,我会在其中得到一个空文件列表。为了列出文件/文件夹,我使用了 API:File.listFiles()

为什么会发生这种情况?如何获取 Android 上所有存储上所有可公开访问的文件/文件夹的列表?

4

1 回答 1

0

我正在使用以下函数获取 sdcard 及其文件夹、子文件夹的所有文件。这对我来说很好。

//A recursive function to list files of all folders and subfolders of SD Card
private void getAllFilesOfDir(File directory) {
    Log.d("Spinner", "Directory: " + directory.getAbsolutePath() + "\n");

    final File[] files = directory.listFiles();

    if ( files != null ) {
        for ( File file : files ) {
            if ( file != null ) {
                if ( file.isDirectory() ) {  // it is a folder...
                    getAllFilesOfDir(file);
                }
                else {  // it is a file...
                    Log.d("Spinner", "File: " + file.getAbsolutePath() + "\n");
                    allFileNameString.add(file.getName());
                    allFilePathString.add(file.getAbsolutePath());
                }
            }
        }
    }
}

你确定你给出了正确的 sdcard 存储目录路径,作为这里的函数调用吗?

getAllFilesOfDir(Environment.getExternalStorageDirectory());

并尝试在函数内部进行调试,出了什么问题?

于 2018-08-24T10:29:49.370 回答