1.緩衝流?java
緩衝流,也叫高效流,是對4個基本的FileXxx
流的加強,因此也是4個流數組
字節緩衝流:BufferedInputStream
,BufferedOutputStream
編碼
字符緩衝流:BufferedReader
,BufferedWriter
spa
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
異常。