1. 程式人生 > >IO流系統總結

IO流系統總結

一.描述如下流的基本作用:

  檔案位元組流、檔案字元流、緩衝位元組流、緩衝字元流位元組陣列流、資料流、轉換流、物件流

1.檔案位元組流:

FileInPutStream

FileOutPutStream

是一種節點流,直接面向資料,中間沒有其他流介入資料。檔案之間的資料通過位元組的方式操作。

基本的位元組流,對於位元組的操作是底層操作,是檔案之間資料的直接操作。

FileInPutStream用到的方法是:read()

用於讀取某個檔案,在使用的時候格式為

FileInPutStream fis = new FileInputStream(“D://test.txt”);

fis.read();

fis.read(byte[],0,length);

這樣我們就讀取到了檔案資料,但是fis.read()是一個位元組,並不是我們人類識別的字元

FileOutPutStream fos = new FileOutPutStream("D://test.txt");

fos.write();

或者

fos.write(byte[], 0 ,length);

一般在使用的時候是這樣的:

首先建立一個數組用來接收fis.read()讀取的資料

byte[] buf = new byte[1024];//任意數字

fis.read(buf);//返回一個int型別的數字,用來記錄每次讀取了多大的資料

int i = fis.read(buf);//這樣我們就完成了一次1024大小的資料獲取 , i = 1024 是我們讀取到的資料;

如果我們讀取完畢,那麼i = fis.read(buf);這個整體將會返回一個-1;(因為檔案當中的資料已經被全部拿走了所以i的賦值結果為-1)

接下來我們使用while迴圈 就可以拿到檔案中所有的資料了;

這個時候我們讀取的檔案存入buf,如果需要輸出的讓我們看到的話,可以使用new String(buf,0,i)來完成顯示讀取的檔案

如果是read()這樣的讀取的話,是一個位元組一個位元組讀取,直接賦值列印就能看到

我們來寫入的時候需要:

write();

將需要帶入的資料放在括號即可。

但是需要注意的是括號中的int型別的資料將自動轉換為char

當然也可以放入陣列,在陣列將陣列當中的資料getByte為資料放在陣列當中寫入檔案

2.檔案字元流:FileReader,FileWrite,是一種節點流。

直接可以面向檔案進行字元間的操作。

基本操作為read以及write方法

但是要注意,讀取的資訊為int,原因是底層使用的InPutStreamRead,如果需要檢視讀取的資料,那麼需要轉為char型別。

所以要使用cahr型別的陣列進行資料的快捷交換。

write需要注意的就是要close或者flush重新整理記憶體/

3.緩衝位元組流:將檔案位元組流中中轉站新增緩衝區(8192),提高資料的傳輸效率。

BufferedInputStream;

read

底層是FileInPutStream,在資料的流傳過程中添加了8192大小的byte型別陣列

BufferedOutputStream;

write

底層是FileOutPutStream

4.緩衝字元流:用於檔案之間字元的流轉.對於可以理解為FileRead的一個包裝提高了效率

BufferedReader,

readLine()

可以進行整行的檔案讀取,

BufferedWrite,

write()

newLine()

進行換行。

這裡我們直接建立一個String類的獲取readLine拿到的整行字元,然後進行write寫入即可

使用while迴圈,條件為讀取完畢返回的null

純文字之間的字元操作應優先考慮緩衝字元流提高效率。

5.位元組陣列流:一種通過位元組方式資料流轉方式,是一種節點流,具體操作方式為將其他型別資料通過位元組陣列的方式流轉資料。預設32為陣列進行資料寫入。

ByteArrayInputStream;

ByteArrayOutputStream; (32位陣列

6.資料流:

一種處理流,包裹緩衝流BufferedInputStream,BufferedOutputStream,而緩衝類包裹了InputStream,OutputStream

將位元組資料處理為一種可以對接的型別如String,int等,方便了資料的處理,一般我們在伺服器和主機之間常常使用

DataInputStream;

DataOutputStream;

提取和寫入的順序需要一致。

理想狀態為包裝緩衝流,在Close的時候關閉最外層的流,即資料流即可。

7.轉換流:將位元組轉換為字元

InputStreamReader 的作用是把 InputStream 轉換成 Reader ,OutputStreamWriter 的作用是把 OutputStream 轉換成 Writer

這裡需要注意的是。在轉換為字元的時候,需要確定字符集。

8.物件流:將資料轉換為物件的形式進行讀寫的方式。

ObjectOutputStream;(序列化

ObjectInputStream; (反序列化

transient 和static修飾的變數無法儲存。

serialVersionUID版本號需要在對於該物件的類進行宣告,否則會導致反序列化失敗提示NotSerializableException。

[ 註解:這裡需要知道的是,如果某個流需要帶入一個其他流來進行實現的話,那麼這個流必然是處理流。]   [ 處理流需要處理的資料,一般是:]   [ 轉換格式]   [ InPutStream -->; InPutStreamRead]   [ 提高效率]   [ InputStream -->BufferedInPutStream]