如何使用BufferedReader循環(huán)讀文件
使用BufferedReader(緩存讀取流)可以每次讀取文件的一行。對于文件內(nèi)容如果是按行為單位排列的話,則使用BufferedReader來讀取文件還是比較方便的。
舉例如下
1、BufferedReader讀取一行
在F盤下有個txt文件,文件內(nèi)容為
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(); } }
結(jié)果為:
哈哈0
2、BufferedReader循環(huán)讀每一行
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; //讀取內(nèi)容為null則表示讀到了文件末尾 while ((text = br.readLine()) != null) { System.out.println(text); } } catch (IOException e) { e.printStackTrace(); } }
結(jié)果為:
哈哈0
哈哈1
哈哈2
哈哈3
哈哈4
哈哈5
哈哈6
哈哈7
哈哈8
哈哈9
3、注意細節(jié)
新手如果沒不注意,容易寫成:
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(); } }
結(jié)果為:
哈哈1
哈哈3
哈哈5
哈哈7
哈哈9
原因
while (true) { if (br.readLine() == null) { break; } System.out.println(br.readLine()); }
因為在while循環(huán)中, if 語句在做判斷時,其實已經(jīng)讀取了一行,而讀取的這行沒有被打印出來,所以就造成了只打印了一部分。
BufferedReader.rean(buffer)注意事項
最近遇到一個問題
BufferedReader.rean(buffer)
讀取數(shù)據(jù)時,最后一行必須獲取到返回值
len=BufferedReader.rean(buffer)
只能取0到len區(qū)間的數(shù)據(jù),len之后的數(shù)據(jù)為上次讀取過的數(shù)據(jù),原因是因為buffer讀取時不會清空數(shù)組。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring類型轉(zhuǎn)換 ConversionSerivce Convertor解析
這篇文章主要介紹了Spring類型轉(zhuǎn)換 ConversionSerivce Convertor的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-11-11Java利用Dijkstra算法求解拓撲關(guān)系最短路徑
迪杰斯特拉算法(Dijkstra)是由荷蘭計算機科學迪家迪杰斯特拉于1959年提出的,因此又叫狄克斯特拉算法。本文將利用迪克斯特拉(Dijkstra)算法求拓撲關(guān)系最短路徑,感興趣的可以了解一下2022-07-07springboot定時任務(wù)備份mysql數(shù)據(jù)庫的實現(xiàn)示例
為了防止數(shù)據(jù)庫被清庫或者誤刪數(shù)據(jù)庫的情況,所以需要定時將mysql數(shù)據(jù)庫中的數(shù)據(jù)進行備份,本文主要介紹了springboot定時任務(wù)備份mysql數(shù)據(jù)庫的實現(xiàn)示例,需要的朋友們下面隨著小編來一起學習學習吧2024-03-03Java如何將Excel數(shù)據(jù)導入到數(shù)據(jù)庫
這篇文章主要為大家詳細介紹了Java將Excel數(shù)據(jù)導入到數(shù)據(jù)庫的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-10-10