[英]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.