Java 8 - 如何在java中逐行读取文件?

时间:2016-05-15 04:00:19

标签: java bufferedreader

我已经看到这类问题,但他们似乎没有回答我的问题。 :(

我有一个文本文件“file.txt”,其内容类似于此

  

ABCD
  EFGH
  IJKL

现在我想要的是,我的程序中不同的String变量存储的不同类型的行 例如

String firstLine , String secondLine , ThiredLine;

当我在字符串上方打印时,输出将是

firstLine :: abcd & secondLine :: efgh & thiredLine :: ijkl

可以使用 readLine()方法或其他任何方法吗?

提前致谢:)

3 个答案:

答案 0 :(得分:2)

如果你真的想这样做,你可以编写这样的代码:

Scanner sc = new Scanner("file.txt");
String firstLine = sc.nextLine();
String secondLine = sc.nextLine();
String thirdLine = sc.nextLine();

但是,使用数组和for循环会更方便:

Scanner sc = new Scanner("file.txt");
String[] lines = new String[3];
for (int i=0; i<lines.length; i++) {
    lines[i] = sc.nextLine();
}

或者,您可以使用ArrayListwhile循环。这样做的好处是,无论文件中的行数如何,此代码都将起作用:

Scanner sc = new Scanner("file.txt");
ArrayList<Sting> lines = new ArrayList<>();
while (sc.hasNextLine()) {
    lines.add(sc.nextLine());
}

答案 1 :(得分:2)

您可以在java api中引用java.nio.file.Pathjava.nio.file.Files类    你可以得到关于这个问题的答案    第一步,您应该通过文件路径获取Path对象    第二步,您可以通过Files.readAllLines(路径路径)方法逐行读取内容。    下面的例子:

   Path path = FileSystems.getDefault().getPath(filePath);
   List<String> datas = Files.readAllLines(path)

答案 2 :(得分:0)

你正在采取的方法似乎有点粗糙。还有很多其他方法可以做到这一点。许多其他人提交了答案,但这是另一种答案。

另请注意,从Java 7开始,现在可以对实现AutoCloseable接口的类进行自动资源管理。

话虽如此,这是一种做法。

    String[] lines = new String[11];  //11 players
    try (BufferedReader reader = new BufferedReader(new FileReader("file path here"))) {
        String line = null;
        int index = 0;
        while ((line = reader.readLine()) != null) {
            lines[index++] = line;
        }
    } catch (IOException e) {
        System.out.println(e.getMessage());
    }