您好,登錄后才能下訂單哦!
這篇文章主要介紹“如何使用BufferedReader讀取File”,在日常操作中,相信很多人在如何使用BufferedReader讀取File問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何使用BufferedReader讀取File”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
Java編程思想一書里面有云,為了提高速度,可以用BufferedReader過濾器類,以提供緩沖區域。但是這個解釋太簡略了,看了這句話仍然不知道為什么要使用它,于是感覺值得研究一下。
其實只用FileReader也能完成讀取文件的任務。
public int read()
:每次只read一個字符
public int read(char cbuf[], int offset, int length)
:每次read從offset到offset+length-1的字符,然后放進cbuf中
public int read(char cbuf[])
:一次性的read出來所有的字符,直接放入cbuf中
這三個read方法,每次調用一次就會read一次file,進行一次IO。不管是多次read還是一次性的read,都不是很優雅的在read文件的方式。多次read必然會產生多次IO,一次性的read如果遇到很大的文件,對內存是極不友好的。
于是BufferedReader就顯現出好處來了。BufferedReader使用裝飾器模式,它的IO行為是每次讀進來8k的數據到緩沖區,如果需要使用數據的時候,再直接從緩沖區里面拿出數據來使用。這樣一來,既提高的讀取速度,又節省了IO的次數,是一種比較優雅的讀取文件的方式。
BufferedReader bufferedReader = new BufferedReader(new FileReader("./pom.xml")); StringBuilder stringBuilder = new StringBuilder(); while ((s = bufferedReader.readLine()) != null) { stringBuilder.append(s + "\n"); } System.out.println(stringBuilder.toString());
使用BufferedReader(緩存讀取流)可以每次讀取文件的一行。對于文件內容如果是按行為單位排列的話,則使用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
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
新手如果沒不注意,容易寫成:
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讀取File”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。