java編程思想——java IO系統,java編程思想io系統
一、什麼是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 |
過濾流通常源和目標是其他的輸入輸出資料流,大家可以看到有眾多的子類,各有用途,就不一一介紹了 |
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。