IO流用來處理設備之間的數據傳輸,對數據的操做是經過流的方式,Java用於操做流的對象都在IO包中。java
完整IO流結構圖以下:數組
IO流分類網絡
1. 處理的數據單位不一樣:編碼
(1)字符流spa
一次讀入或讀出是8位二進制。字節流處理單元爲 1 個字節,操做字節和字節數組。code
(2)字節流對象
一次讀入或讀出是16位二進制。字符流處理的單元爲 2 個字節的 Unicode 字符,分別操做字符、字符數組或字符串(Java內用Unicode編碼存儲字符)內存
2.數據流方向不一樣:字符串
輸入流,輸出流io
3.功能不一樣(流是否直接與特定的地方(如磁盤、內存、設備等)相連):
(1)節點流
節點流從一個特定的數據源讀寫數據。即節點流是直接操做文件,網絡等的流,例如FileInputStream和FileOutputStream,他們直接從文件中讀取或往文件中寫入字節流。
(2)處理流
「鏈接」在已存在的流(節點流或處理流)之上經過對數據的處理爲程序提供更爲強大的讀寫功能,便是對一個已存在的流的鏈接和封裝,經過所封裝的流的功能調用實現數據讀寫。如BufferedReader。處理流的構造方法老是要帶一個其餘的流對象作參數。一個流對象通過其餘流的屢次包裝,稱爲流的連接。
java.io包提供的類
以下圖所示: