如何使用BufferedReader循環讀文件
使用BufferedReader(緩存讀取流)可以每次讀取文件的一行。對於文件內容如果是按行為單位排列的話,則使用BufferedReader來讀取文件還是比較方便的。
舉例如下
1、BufferedReader讀取一行
在F盤下有個txt文件,文件內容為
import java.io.*; public class test { public static void main(String[] args) { BufferedReader br = null; try { br = new BufferedReader(new FileReader("F:\\test.txt")); System.out.println(br.readLine()); } catch (IOException e) { e.printStackTrace(); } }
結果為:
哈哈0
2、BufferedReader循環讀每一行
import java.io.*; public class test { public static void main(String[] args) { BufferedReader br = null; try { br = new BufferedReader(new FileReader("F:\\test.txt")); String text = null; //讀取內容為null則表示讀到瞭文件末尾 while ((text = br.readLine()) != null) { System.out.println(text); } } catch (IOException e) { e.printStackTrace(); } }
結果為:
哈哈0
哈哈1
哈哈2
哈哈3
哈哈4
哈哈5
哈哈6
哈哈7
哈哈8
哈哈9
3、註意細節
新手如果沒不註意,容易寫成:
import java.io.*; public class test { public static void main(String[] args) { BufferedReader br = null; try { br = new BufferedReader(new FileReader("F:\\test.txt")); String text = null; // while (true) { if (br.readLine() == null) { break; } System.out.println(br.readLine()); } } catch (IOException e) { e.printStackTrace(); } }
結果為:
哈哈1
哈哈3
哈哈5
哈哈7
哈哈9
原因
while (true) { if (br.readLine() == null) { break; } System.out.println(br.readLine()); }
因為在while循環中, if 語句在做判斷時,其實已經讀取瞭一行,而讀取的這行沒有被打印出來,所以就造成瞭隻打印瞭一部分。
BufferedReader.rean(buffer)註意事項
最近遇到一個問題
BufferedReader.rean(buffer)
讀取數據時,最後一行必須獲取到返回值
len=BufferedReader.rean(buffer)
隻能取0到len區間的數據,len之後的數據為上次讀取過的數據,原因是因為buffer讀取時不會清空數組。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- 聊聊為什麼要使用BufferedReader讀取File
- 使用BufferedReader讀取TXT文件中數值,並輸出最大值
- Java 如何利用緩沖流讀寫文件
- 解決BufferedReader.readLine()遇見的坑
- 淺談緩沖字符流 BufferedReader BufferedWriter用法