读取多个文件夹文件 java

Read multiple folders files java

我知道如何从 java.But 中的文件夹中一个一个地读取文件 我想知道如果我给一个名为 Search 的文件夹并在 Search 文件夹它有 3 个不同的文件夹,名为 A、B、C,每个文件夹都有多个文本 files.I 想要读取 [=] 中的所有文件13=]A,B,C 文件夹通过给文件夹名称搜索 作为用户 input.can 可能吗?我是 java.

的新人

当然是。这听起来像是您想 walk 一个文件夹(意思是,您想对给定文件夹中的每个文件、该文件夹中的每个子文件夹以及该子文件夹中的每个文件做一些事情, 以及子文​​件夹中的每个子文件夹,无穷无尽,直到你看到所有内容)。

您可以使用 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 了解您可以做的所有事情*。

*) 你说 'I know how to read...' - 可能你已经学会了过时的,过时的 java.io.FileInputStream API。不要使用它 - 使用文件 API。它对错误和字符集编码不那么愚蠢,给你更多的东西(比如让你访问文件所有者的名字和组,以及软链接),以及更多高级 API 原语,比如 'just read the whole thing into a string for me please',以及,'just walk this entire file tree for me please'.