標籤:思想 之間 java sequence iter 字元類型 io操作 java編程思想 out
一、什麼是IO
io在本質上是單個位元組的移動。而流能夠說是位元組移動的載體和方式,它不停的向目標處移動資料。我們要做的就是依據流的方向從流中讀取資料或者向流中寫入資料。
二、java中支援IO操作的庫類
1、依照資料類型分為兩類:
(1)位元組類型:InputStream和OutputStream
(2)字元類型:Writer和Reader
2、依照資料的流動方向,主要分為兩類:
(1)基於磁碟操作的io介面:File
(2)基於網路的io介面:socket
三、位元組流、字元流的io介面說明
位元組流包含輸入資料流InputStream和輸出資料流OutputStream。字元流包含輸入資料流Reader,
InputStream相關類圖例如以下。僅僅列舉了一級子類:
InputStream提供了一些read方法供子類繼承。用來讀取位元組。
OutputStream相關類圖例如以下:
OutputStream提供了一些write方法供子類繼承,用來寫入位元組。
Reader相關類圖例如以下:
Reader提供了一些read方法供子類繼承。用來讀取字元。
Writer相關類圖例如以下:
Writer提供了一些write方法供子類繼承,用來寫入字元。
每一個字元流子類差點兒都會有一個相相應的位元組流子類,兩者功能一樣。區別僅僅是在於操作的是位元組還是字元。
比如CharArrayReader和 ByteArrayInputStream,兩者都是在記憶體中建立數組緩衝區作為輸入資料流,不同的僅僅是前者數組用來存放字元。每次從數組中讀取一個字元;後者則是針對位元組。
| ByteArrayInputStream、CharArrayReader |
為多線程的通訊提供緩衝區操作功能。經常使用於讀取網路中的定長資料包
|
| ByteArrayOutputStream、CharArrayWriter |
為多線程的通訊提供緩衝區操作功能。經常使用於接收足夠長度的資料後進行一次性寫入 |
| FileInputStream、FileReader |
把檔案寫入記憶體作為輸入資料流,實現對檔案的讀取操作 |
| FileOutputStream、FileWriter |
把記憶體中的資料作為輸出資料流寫入檔案。實現對檔案的寫操作 |
| StringReader |
讀取String的內容作為輸入資料流 |
| StringWriter |
將資料寫入一個String |
| SequenceInputStream |
將多個輸入資料流中的資料合併為一個資料流 |
| PipedInputStream、PipedReader、PipedOutputStream、PipedWriter |
管道流。主要用於2個線程之間傳遞資料 |
| ObjectInputStream |
讀取對象資料作為輸入資料流,對象中的 transient 和 static 類型的成員變數不會被讀取或寫入 |
| ObjectOutputStream |
將資料寫入對象 |
| FilterInputStream、FilterOutputStream、FilterReader、FilterWriter |
過濾流通常源和目標是其它的輸入輸出資料流,大家能夠看到有眾多的子類。各實用途,就不一一介紹了 |
java編程思想——java IO系統