中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用BufferedReader讀取File

發布時間:2021-12-09 17:12:20 來源:億速云 閱讀:1426 作者:iii 欄目:開發技術

這篇文章主要介紹“如何使用BufferedReader讀取File”,在日常操作中,相信很多人在如何使用BufferedReader讀取File問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何使用BufferedReader讀取File”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

使用BufferedReader讀取File

Java編程思想一書里面有云,為了提高速度,可以用BufferedReader過濾器類,以提供緩沖區域。但是這個解釋太簡略了,看了這句話仍然不知道為什么要使用它,于是感覺值得研究一下。

其實只用FileReader也能完成讀取文件的任務。

FileReader有三個用于read的函數

  • 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讀取File的代碼舉例

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(緩存讀取流)可以每次讀取文件的一行。對于文件內容如果是按行為單位排列的話,則使用BufferedReader來讀取文件還是比較方便的。

舉例如下

1、BufferedReader讀取一行

在F盤下有個txt文件,文件內容為

如何使用BufferedReader讀取File

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讀取File”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

陆河县| 永胜县| 利津县| 双峰县| 德昌县| 邮箱| 新巴尔虎右旗| 大兴区| 五大连池市| 锡林郭勒盟| 盐城市| 涟水县| 云南省| 余江县| 苗栗市| 色达县| 乐清市| 阿克陶县| 雷州市| 新巴尔虎左旗| 剑川县| 棋牌| 新蔡县| 兴和县| 南召县| 宜川县| 扎赉特旗| 治县。| 都昌县| 白水县| 梁河县| 剑河县| 大悟县| 乐平市| 阿巴嘎旗| 杭锦后旗| 平乡县| 新疆| 塔城市| 洱源县| 德江县|