读取多个文件夹文件java

时间:2021-06-06 14:04:11

标签: java file directory file-read

我知道如何从 java 中的文件夹一个一个地读取文件。但我想知道如果我给一个名为 Search 的文件夹,并且在 Search 文件夹中它有3 个不同的文件夹,名为 A,B,C,每个文件夹都有多个文本文件。我想通过指定文件夹名称来读取 A,B,C 文件夹中的所有文件搜索作为用户输入。这可能吗?我是 Java 新手。

1 个答案:

答案 0 :(得分:2)

当然是。这听起来像是您想遍历一个文件夹(意思是,您想对给定文件夹中的每个文件、该文件夹中的每个子文件夹、该子文件夹中的每个文件以及子文件夹中的每个子文件夹,无穷无尽,直到您看到所有内容为止)。

您可以使用 Files.newDirectoryStream 自行处理递归算法,或者仅使用现有 API:

Path folderToWalk = Paths.get("/path/to/folder");
Files.walkFileTree(folderToWalk, new SimpleFileVisitor<Path>() {
  @Override public visitFile(Path f, BasicFileAttributes attrs) throws IOException {
    // this is invoked for _every_ file anywhere in the folder structure.
  }
});

您还可以添加在无法访问文件时调用的方法(例如,由于访问权限问题),以及如果您想获取目录名称 - 参见 the API

visitFile内,您可以为所欲为。例如,如果要将文件完全读入字符串,则可以调用 Files.readString(f);。请参阅 Files API 了解您可以执行的所有操作*。

*) 您说“我知道如何阅读...” - 您可能已经学习过时、过时的 java.io.FileInputStream API。不要使用它 - 使用 Files API。它对错误和字符集编码不那么笨拙,为您提供更多内容(例如让您访问文件所有者的名称和组以及软链接),以及更多高级 API 原语,例如“只需将整个内容读入一个请为我使用字符串',以及'请为我遍历整个文件树'。

相关问题