IO是java繞不過(guò)去的檻,在開(kāi)發(fā)中io無(wú)處不在, 正如同 世界上本沒(méi)有路,java io寫(xiě)多了,也就知道了大體是什么意思,在讀完thinking in java 感覺(jué)就更清晰了,結(jié)合具體的業(yè)務(wù)場(chǎng)景,整理一下 ,什么是IO。為什么JAVA要這么設(shè)計(jì)IO。
先來(lái)一道開(kāi)胃菜
我想要讀取控制臺(tái)輸入的字符
View Code
解釋一下:我從控制臺(tái)讀取一行字符,然后打印一下。這就是一個(gè)簡(jiǎn)單的流了。
整理一下: 就是我先 得到一個(gè)用于讀取 控制臺(tái)輸入的流,然后 我·打印我得到的東西,這里有個(gè)細(xì)節(jié)就是 流一定得關(guān)閉,這是底線,關(guān)閉的順序:先聲明的后關(guān)閉
稍微深入一點(diǎn)。我用Inputstream 去讀取字符串并轉(zhuǎn)化為想要的編碼格式
View Code
這就偏實(shí)際一點(diǎn),當(dāng)你拿到一個(gè)字符串的時(shí)候,讀取的時(shí)候,有一個(gè)細(xì)節(jié):最好加上編碼格式
解釋一下:實(shí)際上讀取的地方 只有這一點(diǎn) line = bf.readLine() ,那么之前的是做什么呢, 我其實(shí)是在組裝我想要的鏟子。這也是 開(kāi)發(fā)中比較常用的“包裝器模式”
我想把字符串轉(zhuǎn)為貼合實(shí)際的ByteArrayInputStream, 再轉(zhuǎn)化為更常用的Reader(InputStreamReader) 再包裝上buffer(Buffer