JAVA的I/O里面一大堆的類,剛開始學的時候,真是狂暈。
認真讀完Core java之后,才發現這一套機制其實還簡單的,只要抓住2條脈絡:byte和Char,Decrator模式
byte和Char的區別,說起來很簡單,一個是8位,一個是16位。為什么在java中要嚴格區分呢?因為java是unicode的,也就是16位的,而很多系統通用的是ASCII(8bit)。正因為這種差異,在I/O機制中,用stream處理8位,Reader處理16位。在從輸入輸出角度來考慮,于是就有了InputStream/OutputStream和InputReader/OutputReader。
然而,這些原始流提供的功能太少了,效率也太低了。例如,一次只能讀多個字符而不能讀一行。為了提高效率,需要對他們進行一層包裝,提供緩沖等功能。這個時候就應用包裝器(Decrator)模式,設計了buffer... LineNumber...Data...等
當然,操作文件的時候,可以簡單的用FileReader,FileWriter打開文件,具體操作的時候PrintWriter就可以負責文件寫了,而讀文件一般需緩沖, 于是用BufferReader就行了