如何在java中读取多个文件

时间:2014-09-24 19:17:40

标签: java

我需要阅读几个文本文件,这些文件都位于同一目录中。我需要遍历文本文件的每一行,解析出行,执行一些处理,然后读取下一行。当我到达最后一行时,如果存在另一个文件,我想读取目录中的下一个文件。 有谁知道读取目录中每个文件的方法?即。 file1中的所有行,然后是file2中的所有行,然后是file3中的所有行。我知道如何阅读文本行,但我不知道如何读取目录中的下一个文件。文件名可能不会提前知道,但我仍然需要阅读下一个可用的文件。

示例

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 个答案:

答案 0 :(得分:1)

我会给你一个开始的地方。查看Java File and Scanner类。您可以使用文件类基于目录创建对象,然后调用File对象上的listFiles()来获取文件。然后,您可以遍历这些文件并使用Scanner类按行Scanner.nextLine()读取每个文件。这应该给你一个开始的地方。尝试自己解决一些问题,如果您在尝试的代码中仍然遇到问题,我们可以查看它并帮助您。

答案 1 :(得分:1)

您可以使用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());
    }
}