尝试递归列出路径中的所有文件和文件夹。
一切正常,直到我得到一个间隔的文件夹名称。在这种情况下,当我尝试获取带有 f.list()
或 f.listFiles()
的文件列表时,两者都返回null
.当我在 Windows 上进行测试时,我试图用"%20"替换所有空格,该空格以相同的结果结束。
文档说:
如果此抽象路径名不表示目录,则返回 null,或者 如果发生 I/O 错误。
如何列出间隔文件夹名称的文件和文件夹?
String path = "c:/Users/Ioman/AppData/Local/Archivos temporales de Internet";
File f = new File(path);
fileNames(f);
private void fileNames(File f) {
System.out.println("Folder name : " + f.getAbsolutePath());
File[] files = f.listFiles();
for (File file : files) {
if (file.isDirectory()) {
fileNames(file);
} else {
System.out.println(file.getAbsolutePath());
}
}
}
您的代码也适用于带空格的文件夹名称。但我建议使用Java 8中更简单的方法,看看这是否有效。
Files.find(Paths.get(path),
Integer.MAX_VALUE,
(filePath, fileAttr) -> fileAttr.isRegularFile())
.forEach(System.out::println);