知識點:
字元流:是直接讀取字元的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...