使用 BufferedReader 读取 Java 中的 .txt 文件

Reading .txt files in Java using BufferedReader

我正在使用 BufferedReader 从 Java 读取 .txt 文件,但它的行为很奇怪。一些文件被正常读取,一些 return 几个空行和 null 或跳过前几行文本并打印其余部分。我检查了路径、编码、属性,我试图读取的那些文件中的所有内容都是相同的,但代码读取了一个文件,而其他文件则不会。

System.out.println("\r\nChose desired shelf:");
String shelf = br.readLine();
FileReader fr = new FileReader("D:\admir\MyBookLibrary\"+shelf+"\Info.txt");
BufferedReader info = new BufferedReader(fr);
while(info.readLine() != null) {
    System.out.println(info.readLine());
}
fr.close();
info.close();

您正在阅读带有 readLine() 的行两次,这意味着您将每隔一行打印一次。您还应该使用 try-with-resource 来管理您的 AutoCloseable 对象:

String shelf = br.readLine();
Path path = Paths.get("D:", "admir", "MyBookLibrary", shelf, "Info.txt");
try (BufferedReader br = Files.newBufferedReader(path)) {
  br.lines().forEach(System.out::println);
}

由于您的代码有两次 info.readLine(),它将跳过打印所有文件的交替行。 对于正确打印的文件,每行文本后可能有一个空行或换行符 \n,巧合的是,它被跳过了。 在其他文件中,它也必须跳过备用行。 你能检查一下你的文件的实际内容吗?

我稍微修改了您的代码,现在可以使用了:

System.out.println("\r\nChose desired shelf:");
String shelf = br.readLine();
FileReader fr = new 
FileReader("D:\admir\MyBookLibrary\"+shelf+"\Info.txt");
BufferedReader info = new BufferedReader(fr);
String line;
while((line = info.readLine()) != null) {
    System.out.println(line);
}
fr.close();
info.close();