Java輸入/輸出流體系中經常使用的流分類(表內容來自java瘋狂講義)java
注:下表中帶下劃線的是抽象類,不能建立對象。粗體部分是節點流,其餘就是經常使用的處理流。網絡
流分類 | 使用分類 | 字節輸入流 | 字節輸出流 | 字符輸入流 | 字符輸出流 |
抽象基類 | InputStream | OutputStream性能 |
Reader | Writer | |
節點流 | 訪問文件 | FileInputStream | FileOutStream | FileReader | FileWriter |
訪問數值 | ByteArrayInputStream | ByteArrayOutStream | CharArrayReader | CharArrayWriter | |
訪問管道 | PipedInputStream | PipedOutStream | PipedReader | PipedWriter | |
訪問字符串 | StringReader | StringWriter | |||
處理流 | 緩衝流 | BufferedInputStream | BufferedOutputStream | BufferedReader | BufferedWriter |
轉換流 | InputStreamReader | OutputStreamWriter | |||
對象流 | ObjectInputStream | ObjectOutputStream | |||
抽象基類(過濾) | FilterInputStream | FilterOutputStream | FilterReader | FilterWriter | |
打印流 | PrintStream | PrintWriter | |||
推回輸入流 | PushbackInputStream | PushbackReader | |||
特殊流 | DataInputStream | DataOutputStream |
——————————————————————————————————————————————————————————————————spa
總結:對象
1.Java IO是採用的是裝飾模式,即採用處理流來包裝節點流的方式,來達到代碼通用性。ip
2.處理流和節點流的區分方法,節點流在新建時須要一個數據源(文件、網絡)做爲參數,而處理流須要一個節點流做爲參數。字符串
3.處理流的做用就是提升代碼通用性,編寫代碼的便捷性,提升性能。it
4.節點流都是對應抽象基類的實現類,它們都實現了抽象基類的基礎讀寫方法。其中read()方法若是返回-1,表明已經讀到數據源末尾。io