從數(shù)據(jù)來源或者說是操作對象角度看,IO 類可以分為:
1、文件:FileInputStream、FileOutputStream、FileReader、FileWriter
2、數(shù)組: ByteArrayInputStream、ByteArrayOutputStream、 CharArrayReader、CharArrayWriter
3、管道操作:PipedInputStream、PipedOutputStream、PipedReader、PipedWriter
4、基本數(shù)據(jù)類型:DataInputStream、DataOutputStream
5、緩沖操作:BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter
6、打印:PrintStream、PrintWriter
7、對象序列化反序列化:ObjectInputStream、ObjectOutputStream
8、轉(zhuǎn)換:InputStreamReader、OutputStreWriter
字節(jié)流和字符流的區(qū)別:
字節(jié)流讀取單個字節(jié),字符流讀取單個字符(一個字符根據(jù)編碼的不同,對應(yīng)的字節(jié)也不同,如 UTF-8 編碼是 3 個字節(jié),中文編碼是 2 個字節(jié)。)字節(jié)流用來處理二進(jìn)制文件(圖片、MP3、視頻文件),字符流用來處理文本文件.
IO類和相關(guān)方法
IO 類雖然很多,但最基本的是 4 個抽象類:InputStream、OutputStream、Reader、Writer。最基本的方法也就是一個讀 read() 方法、一個寫 write() 方法。
文本文件的寫入和讀取
write() 方法和 Append() 方法并不是像方法名那樣,一個是覆蓋內(nèi)容,一個是追加內(nèi)容,append() 內(nèi)部也是 write() 方法實(shí)現(xiàn)的,也非說區(qū)別,也就是 append() 方法可以直接寫 null,而 write() 方法需要把 null 當(dāng)成一個字符串寫入,所以兩者并無本質(zhì)的區(qū)別。需要注意的是這里并沒有指定文件編碼,可能會出現(xiàn)亂碼的問題。