有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在java中读取多个文件

我需要通读几个文本文件,它们都位于同一个目录中。我需要循环遍历文本文件的每一行,解析该行,执行一些处理,然后读取下一行。当我到达最后一行时,如果存在另一个文件,我想读取目录中的下一个文件。 有人知道如何读取目录中的每个文件吗?即:文件1中的所有行,然后是文件2中的所有行,然后是文件3中的所有行。我知道如何读取文本行,但我不知道如何读取目录中的下一个文件。文件名可能事先不知道,但我仍然需要阅读下一个可用的文件

示例

File1.txt
  - Data line 1
  - Data line 2
  - Data line 3
File2.txt
  - Data line 1
  - Data line 2
File7.txt
  - Data line 1
  - Data line 2
  - Data line 3

共 (2) 个答案

  1. # 1 楼答案

    我会给你一个开始的地方。查看Java文件和扫描程序类。您可以使用file类基于目录创建一个对象,然后调用file对象上的listFiles()来获取文件。然后可以循环浏览这些文件,并使用Scanner类逐行读取每个文件。nextLine()。这应该给你一个开始的地方。试着自己解决一些问题,如果你仍然有问题,发布你尝试过的代码,我们可以看一下并帮助你

  2. # 2 楼答案

    您可以使用Files.walkFileTree。它将允许您传递要从中读取的directory,并且您可以编写自己的Visitor以任何方式处理文件。演示

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.nio.file.FileVisitResult;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.nio.file.SimpleFileVisitor;
    import java.nio.file.attribute.BasicFileAttributes;
    
    public class MultipleDemo extends SimpleFileVisitor<Path> {
    
        @Override
        public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
            System.out.printf("     \tReading %s\t   -", file.getFileName());
            BufferedReader bufferedReader = Files.newBufferedReader(file);
            String line = bufferedReader.readLine();
            while (line != null) {
                System.out.println(line);
                line = bufferedReader.readLine();
            }
    
            System.out.println("Finished");
            return FileVisitResult.CONTINUE;
        }
    
        public static void main(String[] args) throws IOException {
            Files.walkFileTree(Paths.get("full/path/to/your/directory"), new MultipleDemo());
        }
    }