JAVA-基礎(緩衝流-轉換流-序列化流)

JAVA-基礎(緩衝流-轉換流-序列化流)

1.緩衝流?java

緩衝流,也叫高效流,是對4個基本的FileXxx 流的加強,因此也是4個流數組

字節緩衝流BufferedInputStreamBufferedOutputStream編碼

 

字符緩衝流BufferedReaderBufferedWriterspa

2.原理?code

在建立流對象時,會建立一個內置的默認大小的緩衝區數組,經過緩衝區讀寫,減小系統IO次數,從而提升讀寫的效率。對象

複製一個300M的文件,普通io流可能速度在20分鐘以上,緩衝流只須要幾百毫秒。接口

3.構造方法?內存

public BufferedInputStream(InputStream in) :建立一個 新的緩衝輸入流。it

 

public BufferedOutputStream(OutputStream out): 建立一個新的緩衝輸出流。io

public BufferedReader(Reader in) :建立一個 新的緩衝輸入流。

public BufferedWriter(Writer out): 建立一個新的緩衝輸出流。

4.方法?

BufferedReader:public String readLine(): 讀一行文字。

BufferedWriter:public void newLine(): 寫一行行分隔符,由系統屬性定義符號。

5.轉換流?

按照某種規則,將字符存儲到計算機中,稱爲編碼

存儲在計算機中的二進制數按照某種規則解析顯示出來,稱爲解碼

在IDEA中,使用FileReader 讀取項目中的文本文件。因爲IDEA的設置,都是默認的UTF-8編碼,因此沒有任何問題。可是,當讀取Windows系統中建立的文本文件時,因爲Windows系統的默認是GBK編碼,就會出現亂碼。

 

6.InputStreamReader?

是Reader的子類,是從字節流到字符流的橋樑。它讀取字節,並使用指定的字符集將其解碼爲字符。

7.構造方法?

InputStreamReader(InputStream in): 建立一個使用默認字符集的字符流。

InputStreamReader(InputStream in, String charsetName): 建立一個指定字符集的字符流。

8.OutputStreamWriter?

轉換流java.io.OutputStreamWriter ,是Writer的子類,是從字符流到字節流的橋樑。使用指定的字符集將字符編碼爲字節.

9.構造方法?

OutputStreamWriter(OutputStream in): 建立一個使用默認字符集的字符流。

OutputStreamWriter(OutputStream in, String charsetName): 建立一個指定字符集的字符流。

10.序列化?

Java 提供了一種對象序列化的機制。用一個字節序列能夠表示一個對象,該字節序列包含該對象的數據對象的類型對象中存儲的屬性等信息。字節序列寫出到文件以後,至關於文件中持久保存了一個對象的信息。

反之,該字節序列還能夠從文件中讀取回來,重構對象,對它進行反序列化對象的數據對象的類型對象中存儲的數據信息,均可以用來在內存中建立對象

11.ObjectOutputStream?

java.io.ObjectOutputStream 類,將Java對象的原始數據類型寫出到文件,實現對象的持久存儲。

 

12.構造方法?

public ObjectOutputStream(OutputStream out): 建立一個指定OutputStream的ObjectOutputStream。

一個對象要想序列化,必須知足兩個條件:

1該類必須實現java.io.Serializable 接口,Serializable 是一個標記接口,不實現此接口的類將不會使任何狀態序列化或反序列化,會拋出NotSerializableException

 

2該類的全部屬性必須是可序列化的。若是有一個屬性不須要可序列化的,則該屬性必須註明是瞬態的,使用transient 關鍵字修飾。

public final void writeObject (Object obj) : 將指定的對象寫出。

13.ObjectInputStream?

ObjectInputStream反序列化流,將以前使用ObjectOutputStream序列化的原始數據恢復爲對象。

14.構造方法?

public ObjectInputStream(InputStream in): 建立一個指定InputStream的ObjectInputStream。

public final Object readObject () : 讀取一個對象。

對於JVM能夠反序列化對象,它必須是可以找到class文件的類。若是找不到該類的class文件,則拋出一個 ClassNotFoundException 異常。

相關文章
相關標籤/搜索