java基礎筆記之IO流之字元流

2021-07-24 20:26:29 字數 3828 閱讀 9480

知識點:

字元流:是直接讀取字元的io流

字元輸入流:reader:

讀的時候,是把位元組轉成字元,然後再讀取

filereader://字元輸入流

bufferedreader:

特有方法:

public

string

readline();

一次讀取一行,讀不到返回null,讀到就返回對應的資料(string型別)

linenumberreader://行號

setlinenumber():設定行號

getlinenumber():獲取行號

字元輸出流:

writer

有乙個2k的小緩衝區

不關流會將內容寫到緩衝區內,關閉流之後,就會重新整理出來

filewriter://字元輸出流,在寫出時,有乙個緩衝區

filewriter fw = new filewriter(檔案路徑);

fw.write(字串/單個字元);

bufferedwriter:

public

void

newline()

;

//根據當前的作業系統,給出對應的換行符.

設計模式:

概述:

實際開發中,我們發現專案中好多地方是相似的,我們就把這些相似的內容抽取出來定義成:模型. 這樣,按照模型做出來的東西就是具備某些功能,或者實現了某些需求的,這些模型,就是:設計模式.

設計模式: 一種23種. //記憶

推薦乙個人和一本書: 閆閎. uml統一建模語言.

分類:

建立型: 就是需要建立物件的.

單例設計模式, 工廠設計模式.

結構型: 指的是類與類之間的關係.

裝飾設計模式, 介面卡設計模式.

行為型: 指的是類能做什麼.

模板方法設計模式.

裝飾設計模式: //記憶

步驟:

1: 獲取被裝飾類的引用.

2: 將被裝飾類的物件作為引數傳遞給 裝飾類的構造方法.

3: 對原有的功能進行公升級.

好處:

降低了耦合性,被裝飾類的改變與裝飾類無關.

轉換流:

inputstreamreader:/

/是位元組流通向字元流的橋梁

public inputstreamreader(inputstream is,string charsetname);

outputstreamwriter:

//是字元流通向位元組流的橋梁

public outputstreamwriter(outputstream is,string charsetname);

遞迴:

概述: 方法自己呼叫自己.

好處:不用知道迴圈次數.

注意事項:

1: 遞迴必須要有出口,否則容易導致棧記憶體溢位.

2: 遞迴的呼叫次數不能過多,否則容易導致棧記憶體溢位.

3: 構造方法不能遞迴呼叫.

要搞定遞迴,只需要搞定四個字就ok了: 出口,規律.

補充內容:

1: 將字串轉換成其對應的 不同碼表的位元組陣列.

string str = "你!@好32";

byte bys = str.getbytes("utf-8"); //小括號中寫的是碼表的名字,不區分大小寫

//中文的第乙個位元組都是 負數. 在gkb碼表中佔兩個位元組,在utf-8碼表中佔三個位元組.

system.out.println(arrays.tostring(bys));

[-28, -67, -96, 33, 64, -27, -91, -67, 51, 50]

2.拷貝純文字檔案的方式:

1: 用普通的字元流一次讀寫乙個字元.

2: 用普通的字元流一次讀寫乙個指定長度的字元陣列.

3: 用高效的字元流一次讀寫乙個字元.

4: 用高效的字元流一次讀寫乙個指定長度的字元陣列.

5: 用高效的字元流一次讀寫 一行資料. //必須重點掌握

遞迴: 方法自己呼叫自己

好處:不用知道次數

注意事項:

1.遞迴必須有出口,否則容易導致記憶體溢位

2.遞迴呼叫次數

弊端:次數過多會造成記憶體溢位

構造方法能用遞迴嗎?

構造方法不能使用遞迴呼叫

遞迴呼叫是否必須有返回值?

不一定,看需求,

面試題:

1:

writer

類, 字元高效流(

bufferedrreader

,

bufferedwriter

), 位元組高效流(

bufferesinputstream

,

bufferesoutputstream

*)的內建緩衝區的大小分別是多少?

2kb. 16kb(8192個字元) 8kb(8192個位元組)

2: 什麼時候使用字元流?

唯讀或者只寫 純文字檔案的時候可以考慮使用字元流.

/*當乙個檔案能用微軟自帶的記事本開啟,並且裡邊的內容你也能看得懂的時候,就可以使用字元流拷貝.

//拷貝純文字檔案的時候推薦使用字元流.

*/3: 字元流是否可以拷貝非純文字檔案?

不可以拷貝.

4: readline()和newline()的作用是什麼? 是哪個類中的方法?

readline():buferedreade裡的,讀取一行

newline():buffereswriter裡的,換行

5: 位元組流通向字元流的橋梁是?

inputstreamreader.

6: 字元流通向位元組流的橋梁是?

outputstreamwriter

7: 進行遞迴的方法,必須有返回值嗎?

不一定,看需求.

8.nextline()與\r\n的區別?

newline():是跨平台的換行,屬於bufferedreader

"\r\n":只支援windows的換行

java基礎之io流

1.四大抽象基類 位元組流 inputstream outputstream 字元流 writer reader 位元組輸出流寫檔案用其子類fileoutputstream類 構造 fileoutputstream file file 傳遞file物件包裝檔案 string name 傳遞字串型別檔...

java基礎之IO流

io流概念 輸入流 把能夠讀取乙個位元組序列的物件稱為輸入流。輸出流 把能夠寫乙個位元組序列的物件稱為輸出流。通俗理解 對於初學者,可能常常不清楚何時該用輸入流,何時該用輸出流。本人將這兩個流記為 讀入寫出 那麼我就清楚輸入流就有read 讀 方法,輸出流就有write 寫 方法。然後,再思考 讀入...

Java基礎之IO流

1.位元組流 1.輸入流 inputstream 1.子類 fileinputstream 2.輸出流 outputstream 2.子類 fileoutputstream 3.操作流程 1.硬碟 輸入流 記憶體 輸出流 硬碟 2.示例 fileinputstream fis new fileinp...