字元流讀取

2021-07-25 14:02:52 字數 2762 閱讀 1154

一、字元流filereader

1.字元流是什麼

* 字元流是可以直接讀寫字元的io流

* 字元流讀取字元, 就要先讀取到位元組資料, 然後轉為字元. 如果要寫出字元, 需要把字元轉為位元組再寫出.    

2.filereader

* filereader類的read()方法可以按照字元大小讀取

filereader fr = new filereader("aaa.txt");                //建立輸入流物件,關聯aaa.txt

int ch;

while((ch = fr.read()) != -1)

fr.close();                                //關流

字元流filewriter

filewriter類的write()方法可以自動把字元轉為位元組寫出

filewriter fw = new filewriter("aaa.txt");

fw.write("aaa");

fw.close();

字元流的拷貝

filereader fr = new filereader("a.txt");

filewriter fw = new filewriter("b.txt");

int ch;

while((ch = fr.read()) != -1)

fr.close();

fw.close();

二、什麼情況下使用字元流

* 字元流也可以拷貝文字檔案, 但不推薦使用. 因為讀取時會把位元組轉為字元, 寫出時還要把字元轉回位元組.

* 程式需要讀取一段文字, 或者需要寫出一段文字的時候可以使用字元流

* 讀取的時候是按照字元的大小讀取的,不會出現半個中文

* 寫出的時候可以直接將字串寫出,不用轉換為位元組陣列

字元流是否可以拷貝非純文字的檔案

* 不可以拷貝非純文字的檔案

* 因為在讀的時候會將位元組轉換為字元,在轉換過程中,可能找不到對應的字元,就會用?代替,寫出的時候會將字元轉換成位元組寫出去

* 如果是?,直接寫出,這樣寫出之後的檔案就亂了,看不了了  

帶緩衝的字元流)

* bufferedreader的read()方法讀取字元時會一次讀取若干字元到緩衝區, 然後逐個返回給程式, 降低讀取檔案的次數, 提高效率

* bufferedwriter的write()方法寫出字元時會先寫到緩衝區, 緩衝區寫滿時才會寫到檔案, 降低寫檔案的次數, 提高效率

bufferedreader br = new bufferedreader(new filereader("aaa.txt"));    //建立字元輸入流物件,關聯aaa.txt

bufferedwriter bw = new bufferedwriter(new filewriter("bbb.txt"));    //建立字元輸出流物件,關聯bbb.txt

int ch;                

while((ch = br.read()) != -1)

br.close();                            //關流

bw.close();  

readline()和newline()方法)

bufferedreader的readline()方法可以讀取一行字元(不包含換行符號)

bufferedwriter的newline()可以輸出乙個跨平台的換行符號"\r\n"

bufferedreader br = new bufferedreader(new filereader("aaa.txt"));

bufferedwriter bw = new bufferedwriter(new filewriter("bbb.txt"));

string line;

while((line = br.readline()) != null)

br.close();

bw.close();

三、裝飾設計模式

inte***ce coder

class student implements coder

}class heimastudent implements coder

@override

public void code()

} 使用指定的碼表讀寫字元)

* filereader是使用預設碼表讀取檔案, 如果需要使用指定碼表讀取, 那麼可以使用inputstreamreader(位元組流,編碼表)

* filewriter是使用預設碼表寫出檔案, 如果需要使用指定碼表寫出, 那麼可以使用outputstreamwriter(位元組流,編碼表)

bufferedreader br =                                     //高效的用指定的編碼表讀

new bufferedreader(new inputstreamreader(new fileinputstream("utf-8.txt"), "utf-8"));

bufferedwriter bw =                                     //高效的用指定的編碼表寫

new bufferedwriter(new outputstreamwriter(new fileoutputstream("gbk.txt"), "gbk"));

int ch;

while((ch = br.read()) != -1)

br.close();

bw.close();

C 讀取檔案流

using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.linq using system.text u...

node csv檔案流讀取

csv檔案流讀取,可以應對大檔案,資料截斷傳送,不會出現記憶體不足的情況 function user,date,filepath,callback var item fg var dbflag true var getcount 0 var tcount 0 api獲取資料條數 var otherc...

檔案流讀取 InputStream

bufferedreader轉換成string 注意 流關閉需要自行處理 param reader return string throws ioexception public static string bufferedreader2string bufferedreader reader th...