如果我们使用 Android API 来获取外部存储目录,我们会得到类似/storage/emulated/0
. 如果我在同一文件上运行递归遍历,我会得到列出的所有文件和文件夹的列表。
所以,我想到了运行遍历,/storage
认为它会返回所有存在的公共目录。但是,在运行相同的程序时,我会在其中得到一个空文件列表。为了列出文件/文件夹,我使用了 API:File.listFiles()
为什么会发生这种情况?如何获取 Android 上所有存储上所有可公开访问的文件/文件夹的列表?
如果我们使用 Android API 来获取外部存储目录,我们会得到类似/storage/emulated/0
. 如果我在同一文件上运行递归遍历,我会得到列出的所有文件和文件夹的列表。
所以,我想到了运行遍历,/storage
认为它会返回所有存在的公共目录。但是,在运行相同的程序时,我会在其中得到一个空文件列表。为了列出文件/文件夹,我使用了 API:File.listFiles()
为什么会发生这种情况?如何获取 Android 上所有存储上所有可公开访问的文件/文件夹的列表?
我正在使用以下函数获取 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());
并尝试在函数内部进行调试,出了什么问题?