我正在创建一个 Android 应用程序,我想列出一个目录中的文件。我通过调用来做到这一点
File[] files = path.listFiles(new CustomFileFilter());
path
是一个File
对象,它是通过调用创建的
File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
然后当我尝试files
通过调用来获取数组的长度时
int length = files.length;
这条线给了我一个NullPointerException
,因为files
是空的。
我已经path
通过调用检查了我尝试列出的文件是否存在
System.out.println("Path exists: " + path.exists());
当我运行应用程序时,它会打印
Path exists: true
在 Android Studio 控制台中,因此该目录存在。
我还打印了路径名,即
/storage/emulated/0/Download
所以这path
是一个目录,而不是一个文件。
我不知道为什么我得到一个NullPointerException
,因为它path
是一个目录。
编辑:CustomFileFilter
类看起来像这样:
public class CustomFileFilter implements FileFilter {
// Determine if the file should be accepted
@Override
public boolean accept(File file) {
// If the file isn't a directory
if(file.isDirectory()) {
// Accept it
return true;
} else if(file.getName().endsWith("txt")) {
// Accept it
return true;
}
// Don't accept it
return false;
}
}