流區分:
未經加工的原始二進制數據叫字節流,經一定編碼處理後符合某種格式規定的特定數據是字符流,Java中的字符是Unicode編碼,一個字符佔用兩個字節。什麼Input,Output就是字節流,什麼Reader,Writer當然就是字符流啦。
什麼時候用字節流?什麼時候用字符流?
如果是音頻文件、圖片、歌曲,就用字節流好點,
如果是關係到中文(文本)的,用字符流好點。
如果已到達流的末尾,則返回 -1。
File類:查取文件或其目錄的信息,增刪文件。
字節流:
- 讀:InputStream (抽象類 ) 文件輸入流: FileInputStream類 緩衝輸入流 :BufferedInputStream
- 寫:OutputStream(抽象類) 文件輸出流: FileOutputStream類 緩衝輸出流:BufferedOutputStream
- 二進制文件:讀 DataInputStream 寫 DataOutputStream
-
對象文件互換:讀 ObjectDataInputStream(反序列化) 寫 ObjectOutputStream(序列化)
字符流:
- 讀:Reader抽象類 文件輸入流: FileReader 緩衝輸入流 :BufferedReader
- 寫:Writer抽象類 文件輸出流 :FileWriter 緩衝輸出流:BufferedWriter
字節流、字符流區別:
- 字節流中的最小單位是8個bit字節,適用二進制文件。
- 字符流中的最小單位是16個bit字節,適用文本文件。Reader類能夠將輸入流中採用其他編碼類型的字符轉換爲Unicode字符,然後在內存中爲其分配內存Writer類能夠將內存中的Unicode字符轉換爲其他編碼類型的字符,再寫到輸出流中。
PS:重點是搞懂每個類的位置及其作用,參考:https://blog.csdn.net/weixin_41064826