Java 递归文件列表为空格名称文件夹返回 null

标签 java file

尝试递归地列出路径中的所有文件和文件夹。

一切正常,直到我得到一个带空格的文件夹名称。在这种情况下,当我尝试获取带有 f.list() 的文件列表时或f.listFiles() ,都返回 null 。 当我在 Windows 上测试时,我尝试将所有空格替换为“%20”,但结果相同。

文档说:

Returns null if this abstract pathname does not denote a directory, or if an I/O error occurs.

如何列出带有空格文件夹名称的文件和文件夹?

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);

关于Java 递归文件列表为空格名称文件夹返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56526252/

相关文章:

java - 打印出不同的文件名

python:直接编辑ISO文件

java - 在Java文件夹中创建新文件

c - 如何在多个操作系统下获取文件修改时间?

c - 从C中以分号分隔的文本文件中读取不同的数据

python - 有没有一种方法可以从一个文件中查找另一个文件中的单词,并将在另一个文件中找不到的单词输出到一个新文件中?

java - Spring 中抽象类的构造函数依赖注入(inject)

java - 使用 Gradle 构建错误 "the number of constructors during runtime and compile time for org.gradlefx.configuration "

java - 在 Java 中设置框架

java - 处理 NumberFormatException 的最佳实践