以字節爲單位,8位,可訪問全部類型文件,在寫入時其實是將byte中的二進制數據寫入文件(即便爲byte賦值65,也是將65轉成一串二進制數據,而後寫入,由於全部流都是讀寫二進制數據)數組
以字符爲單位,16位Unicode,只可訪問文本文件.網絡
(因爲直接使用字節流時,輸出流會要求將數據轉成二進制數據(即byte類型),在讀取時又只能讀取到byte類型,若是要還原到原始類型則須要手動轉換,同時可能產生讀取的byte不足以轉換爲一個字符(一些字符須要多個字節),此時會產生亂碼.因此對於字符類型,將相應操做封裝起來,創建字符流的輸入/輸出)多線程
(字符流避免了"讀一半"的狀況,讀/寫編碼表不統一的狀況仍需其餘操做進行處理)性能
FileInputStream和FileOutputStream編碼
獲取文件的輸入流或輸出流,實現對任意文件的讀寫spa
特色:線程
FilterInputStream和FilterOutputStreamcode
過濾器輸入流和過濾器輸出流,爲基礎的輸入流和輸出流增長其餘功能.有多種不一樣功能的子類對象
DataIntputStreamblog
數據輸入流容許應用程序以與機器無關方式從底層輸入流中讀取基本 Java 數據類型。
DataOutputStream
數據輸出流容許應用程序以適當方式將基本Java數據類型寫入輸出流中。
特色:
(由於其餘字節流只能讀寫字節和字節數組,例如其餘輸出流寫入65時,文件中顯示的是A)
BufferedInputStream和BufferedOutputStream
特色:
PushbackInputStream
特色:
PrintStream
特色:
ObjectInputStream和ObjectOutputStream
特色:
PipedOutputStream和PipedInputStream
管道輸出流和管道輸入流。
特色:
ByteArrayInputStream和ByteArrayOutputStream
內存輸入流和內存輸出流
在內存中設置必定長度的數組做爲緩衝區
特色:
SequenceInputStream
特色:
將多個輸入流合併爲一個輸入流,在讀入時,當前輸入流讀入完畢自動轉入下一個輸入流進行讀取
BufferedReader和BufferedWriter
組合其餘Reader和Writer使用
能夠讀取一行
InputStreamReader和OutputStreamWriter
轉換流,將字節流裝飾爲字符流
InputStreamReader 是字節流通向字符流的橋樑
OutputStreamWriter 是字符流通向字節流的橋樑
在構造時須要InputStream和OutputStream
FileReader和FileWriter
StringReader和StringWriter
相似ByteArrayInputStream和ByteArrayOutputStream,可是緩衝區是一個String
PipedReader和PipedWriter
管道字節輸入輸出流
CharArrayReader和CharArrayReader
相似ByteArrayInputStream和ByteArrayOutputStream,可是緩衝區是一個char[]
PushbackReader
增長推回,組合其餘Reader使用