簡體   English   中英

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

[英]Reading .txt files in Java using BufferedReader

我正在使用BufferedReader從Java讀取.txt文件,但它的行為很奇怪。 某些文件可以正常讀取,有些則返回幾行空行,並且為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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM