文章目錄
- 概要
- 分類
- (1)按照流的方向分類
- (2)按照操作數據單位分類
- (3)按照IO流的角色分類
- (4)常用流的總結
- 總結
概要
在Java中,IO流主要用于處理數據的傳輸,它們可以根據不同的分類標準分為多種類型。
分類
(1)按照流的方向分類
- 輸入流(Input Stream):用于從數據源(如文件、網絡連接等)讀取數據到內存中。常見的輸入流類有FileInputStream、ByteArrayInputStream、SocketInputStream等。
- 輸出流(Output Stream):用于將數據從內存寫入到目標地(如文件、數據庫、網絡等)。常見的輸出流類有FileOutputStream、ByteArrayOutputStream、SocketOutputStream等。
(2)按照操作數據單位分類
- 字節流(Byte Stream):以字節為單位讀寫數據,適用于處理二進制數據,如圖像、音頻、視頻等。常見的字節流類有InputStream和OutputStream。
- 字符流(Character Stream):以字符為單位讀寫數據,適用于處理文本數據。字符流會自動進行字符編碼和解碼,可以處理多國語言字符。常見的字符流類有Reader和Writer。
(3)按照IO流的角色分類
- 節點流(Node Stream):直接從數據源或目的地讀寫數據,是IO流體系中的基礎流。如FileInputStream、FileOutputStream等。
- 處理流(Processing Stream):不直接連接到數據源或目的地,而是“連接”在已存在的流(節點流或處理流)之上,通過對數據的處理為程序提供更為強大的讀寫功能。常見的處理流有BufferedInputStream、BufferedOutputStream、InputStreamReader、OutputStreamWriter等。
(4)常用流的總結
- 字符流類:Reader、Writer是字符流的抽象基類,FileReader、FileWriter是常用的文件字符流類,用于文本文件的讀寫。
- 字節流類:InputStream、OutputStream是字節流的抽象基類,FileInputStream、FileOutputStream是常用的文件字節流類,用于二進制文件的讀寫。
- 緩沖流:如BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter,它們增加了緩沖功能,提高了讀寫效率。
- 轉換流:如InputStreamReader、OutputStreamWriter,用于在字節流和字符流之間進行轉換。
- 對象流:如ObjectInputStream、ObjectOutputStream,提供了直接讀寫Java對象的功能。
總結
在面試中,除了準確回答以上分類和流的特點外,還可以結合實際的應用場景(如文件讀寫、網絡通信等)來進一步闡述IO流的使用和重要性。