使用 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();
我正在使用 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();