系統(tǒng)學(xué)習(xí) Java IO----目錄,概覽

Java IO 類的系統(tǒng)教程拄衰,原創(chuàng)它褪。主要參考自英文教程 Java IO Tutorial 和 Java Doc。
http://tutorials.jenkov.com/java-io/index.html
目的: 掌握 Java IO 幾乎所有類的基礎(chǔ)用法翘悉,完全知道什么時(shí)候應(yīng)該使用什么類茫打。
分開學(xué)習(xí),先系統(tǒng)學(xué)習(xí) IO 所有的類妖混,再另外學(xué)習(xí) NIO 老赤。

目錄:

  1. 系統(tǒng)學(xué)習(xí) Java IO (一)----輸入流和輸出流 InputStream/OutputStream
  2. 系統(tǒng)學(xué)習(xí) Java IO (二)----IO 異常處理
  3. 系統(tǒng)學(xué)習(xí) Java IO (三)----文件類 File
  4. 系統(tǒng)學(xué)習(xí) Java IO (四)----文件處理流和隨機(jī)訪問 FileInputStream/FileOutputStream & RandomAccessFile
  5. 系統(tǒng)學(xué)習(xí) Java IO (五)----使用 SequenceInputStream 組合多個(gè)流
  6. 系統(tǒng)學(xué)習(xí) Java IO (六)----管道流 PipedInputStream/PipedOutputStream
  7. 系統(tǒng)學(xué)習(xí) Java IO (七)----字節(jié)數(shù)組流 ByteArrayInputStream/ByteArrayOutputStream
  8. 系統(tǒng)學(xué)習(xí) Java IO (八)----裝飾流 FilterInputStream/FilterOutputStream
  9. 系統(tǒng)學(xué)習(xí) Java IO (九)----緩沖流 BufferedInputStream/BufferedOutputStream
  10. 系統(tǒng)學(xué)習(xí) Java IO (十)----回退流 PushbackInputStream
  11. 系統(tǒng)學(xué)習(xí) Java IO (十一)----打印流 PrintStream
  12. 系統(tǒng)學(xué)習(xí) Java IO (十二)----數(shù)據(jù)流和對象流
  13. 系統(tǒng)學(xué)習(xí) Java IO (十三)----字符讀寫 Reader/Writer 及其常用子類
  14. 系統(tǒng)學(xué)習(xí) Java IO (十四)----字符讀寫緩存和回退 BufferedReader/BufferedWriter & PushbackReader
  15. 系統(tǒng)學(xué)習(xí) Java IO (十五)----字符讀寫 Reader/Writer 其他子類
  16. 系統(tǒng)學(xué)習(xí) Java IO (十六)----這么多類,應(yīng)該用哪個(gè)?

先放一張 IO 類圖制市,看著有點(diǎn)多(本教程還包含了一些不在這圖里的)抬旺,不要怕,跟著 Jenkov 大神走祥楣,一個(gè)一個(gè)來开财,都能掌握的。

部分內(nèi)容概覽

Java.io 包幾乎包含了所有操作輸入荣堰、輸出需要的類床未。所有這些流類代表了輸入源和輸出目標(biāo)竭翠。
System.in振坚, System.outSystem.err 這三個(gè)流也是數(shù)據(jù)的常見來源或目的地。
分別對應(yīng) InputStream斋扰,PrintStream 和 PrintStream
最常用的可能是 System.out渡八,用于從控制臺程序向控制臺寫入輸出。
當(dāng) JVM 啟動(dòng)時(shí)传货,它們由 Java 運(yùn)行時(shí)環(huán)境初始化屎鳍,不必自己實(shí)例化(盡管可以在運(yùn)行時(shí)改變它們)
一個(gè)示例如下:

public class SystemToFile {
    public static void main(String[] args) throws FileNotFoundException {
        System.out.println("print to console"); // 默認(rèn)輸出到控制臺
        // 改變 System 輸出流,從控制臺到文件
        OutputStream output = new FileOutputStream("D:\\out.txt");
        PrintStream printOut = new PrintStream(output);
        System.setOut(printOut);
        System.out.println("now print to File"); // 將輸出到文件 D:\out.txt
    }
}
將流結(jié)合起來

可以將流組合成鏈,以實(shí)現(xiàn)更高級的輸入和輸出操作问裕。
例如逮壁,從文件中一次讀取一個(gè)字節(jié)的速度很慢。 從磁盤讀取更大的數(shù)據(jù)塊然后在字節(jié)之后迭代該塊字節(jié)更快粮宛。
要實(shí)現(xiàn)緩沖窥淆,可以將 InputStream 包裝在 BufferedInputStream 中卖宠,
InputStream input = new BufferedInputStream(new FileInputStream("D:\\out.txt"));
OutputStream 同理。緩沖只是通過組合流可以實(shí)現(xiàn)的效果之一忧饭。 還可以將 InputStream 包裝在 PushbackStream 中扛伍。
這樣,可以將數(shù)據(jù)推回到流中词裤,以便稍后重新讀取刺洒。 這在解析過程中有時(shí)很方便。 或者吼砂,可以使用SequenceInputStream將兩個(gè)InputStream合并為一個(gè)逆航。

InputStream 類是所有 Java IO 輸入流的基類。

一般直接定義 InputStream 對象帅刊,然后指向它的具體子類引用纸泡,
這樣做能夠處理所有類型的輸入流,而不僅僅是具體的子類赖瞒。

OutputStream類是所有Java IO輸出流的基類女揭。

同樣,一般直接定義 OutputStream 對象栏饮,然后指向它的具體子類引用

Reader 和 Writer

與 InputStream 和 OutputStream 非常相似吧兔,
但 Reader 和 Writer 是基于字符的。

Reader 可以與 InputStream 結(jié)合使用袍嬉。 如果你有一個(gè)InputStream并想從中讀取字符境蔼,你可以將它包裝在InputStreamReader中。 將InputStream傳遞給InputStreamReader的構(gòu)造函數(shù)伺通,如下所示:
Reader reader = new InputStreamReader(inputStream);
Writer 同樣也可以:
Writer writer = new OutputStreamWriter(outputStream);

Writer 是其他所有 writer 的父類箍土,下面是一個(gè) Writer 的例子:

Writer writer = new FileWriter("D:\\out.txt");
writer.write("Hello Writer");`  
writer.close();

將 Writers 與 OutputStreams 相結(jié)合

Writer 可以像 Readers 和 InputStream 一樣與 OutputStream 結(jié)合使用。 將 OutputStream 包裝在OutputStreamWrite r中罐监,并將寫入 Writer 的所有字符傳遞給 OutputStream 吴藻。 這是一個(gè)OutputStreamWriter示例:
Writer writer = new OutputStreamWriter(outputStream);

將Readers和Writers結(jié)合起來

就像使用流一樣,Reader 和 Writer 可以組合成鏈弓柱,以實(shí)現(xiàn)更有趣的 IO沟堡。 它的工作原理就像將Reader與 InputStream或者 Writer 與 OutputStream 相結(jié)合。
例如矢空,可以通過將Reader包裝在BufferedReader或BufferedWriter中的Writer中來實(shí)現(xiàn)緩沖航罗。
以下是兩個(gè)這樣的例子:

Reader reader = new BufferedReader(new FileReader(...));
Writer writer = new BufferedWriter(new FileWriter(...));

有時(shí)可能需要同時(shí)處理輸入和輸出。換句話說屁药,可能需要有多個(gè)線程處理輸入并生成輸出粥血。
例如,可能有一個(gè)需要處理磁盤上大量文件的應(yīng)用程序。 這可以與性能增益并行完成复亏。 或者您可能有一個(gè)服務(wù)器绢彤,如Web服務(wù)器或聊天服務(wù)器,它接收許多單獨(dú)的連接和請求蜓耻。 這些也可以并行處理茫舶,結(jié)果具有一些性能增益。

接下來就跟著目錄走...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末刹淌,一起剝皮案震驚了整個(gè)濱河市饶氏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌有勾,老刑警劉巖疹启,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蔼卡,居然都是意外死亡喊崖,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進(jìn)店門雇逞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來荤懂,“玉大人,你說我怎么就攤上這事塘砸〗诜拢” “怎么了?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵掉蔬,是天一觀的道長廊宪。 經(jīng)常有香客問我,道長女轿,這世上最難降的妖魔是什么箭启? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮蛉迹,結(jié)果婚禮上傅寡,老公的妹妹穿的比我還像新娘。我一直安慰自己婿禽,他們只是感情好赏僧,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布大猛。 她就那樣靜靜地躺著扭倾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪挽绩。 梳的紋絲不亂的頭發(fā)上膛壹,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼模聋。 笑死肩民,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的链方。 我是一名探鬼主播持痰,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼祟蚀!你這毒婦竟也來了工窍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤前酿,失蹤者是張志新(化名)和其女友劉穎患雏,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體罢维,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡淹仑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了肺孵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片匀借。...
    茶點(diǎn)故事閱讀 38,626評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖平窘,靈堂內(nèi)的尸體忽然破棺而出怀吻,到底是詐尸還是另有隱情,我是刑警寧澤初婆,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布蓬坡,位于F島的核電站,受9級特大地震影響磅叛,放射性物質(zhì)發(fā)生泄漏屑咳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一弊琴、第九天 我趴在偏房一處隱蔽的房頂上張望兆龙。 院中可真熱鬧,春花似錦敲董、人聲如沸紫皇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽聪铺。三九已至涩拙,卻和暖如春砚蓬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背析恢。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留键兜,地道東北人凤类。 一個(gè)月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像普气,于是被迫代替她去往敵國和親谜疤。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評論 2 348

推薦閱讀更多精彩內(nèi)容