包裝 InputOutput 流

OutputStreamInputStream 有許多不同的類,每個類都具有獨特的功能。通過將流包裹在另一個流中,你可以獲得兩個流的功能。

你可以多次包裝流,只需記下訂購。

有用的組合

使用緩衝區時將字元寫入檔案

File myFile = new File("targetFile.txt");
PrintWriter writer = new PrintWriter(new BufferedOutputStream(new FileOutputStream(myFile)));

在使用緩衝區寫入檔案之前壓縮和加密資料

Cipher cipher = ... // Initialize cipher
File myFile = new File("targetFile.enc");
BufferedOutputStream outputStream = new BufferedOutputStream(new DeflaterOutputStream(new CipherOutputStream(new FileOutputStream(myFile), cipher)));

輸入/輸出流包裝器列表

包裝紙 描述
BufferedOutputStream / BufferedInputStream 雖然 OutputStream 一次寫入一個位元組的資料,但 BufferedOutputStream 以資料塊的形式寫入資料。這減少了系統呼叫的數量,從而提高了效能。
DeflaterOutputStream / DeflaterInputStream 執行資料壓縮。
InflaterOutputStream / InflaterInputStream 執行資料解壓縮。
CipherOutputStream / CipherInputStream 加密/解密資料。
DigestOutputStream / DigestInputStream 生成訊息摘要以驗證資料完整性。
CheckedOutputStream / CheckedInputStream 生成 CheckSum。CheckSum 是 Message Digest 的一個更簡單的版本。
DataOutputStream / DataInputStream 允許寫入原始資料型別和字串。意思是寫位元組。平臺獨立。
PrintStream 允許寫入原始資料型別和字串。意思是寫位元組。平臺依賴。
OutputStreamWriter 將 OutputStream 轉換為 Writer。OutputStream 處理位元組,而 Writers 處理字元
PrintWriter 自動呼叫 OutputStreamWriter。允許寫入原始資料型別和字串。嚴格來說,寫字元和寫字元最好