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

Java 8 - How to read file line by line in java?

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

我有一个文本文件 "file.txt" 其内容类似于这样

abcd
efgh
ijkl

现在我想要那个,不同类型的行在我的程序中由不同的字符串变量存储
例如

String firstLine , String secondLine , ThiredLine;

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

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

是否可以使用 readLine() 方法或任何其他方法来实现?

提前致谢:)

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

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());
}

您可以参考 java.nio.file.Pathjava.nio.file.Files class java api.
你可以得到问题的答案。
第一步你应该通过文件路径获取 Path 对象。
第二步你可以通过Files.readAllLines(Path路径)方法逐行读取内容。 下面的例子:

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

您采用的方法似乎有点粗糙。还有许多其他方法可以做到这一点。许多其他人已经提交了答案,但这里有一个替代答案。

另请注意,从 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());
    }