OutputStreamWriter
本身不支持數(shù)據(jù)壓縮,但你可以結(jié)合 GZIPOutputStream
或其他壓縮庫來實現(xiàn)數(shù)據(jù)的壓縮輸出。下面是一個使用 GZIPOutputStream
和 OutputStreamWriter
實現(xiàn)數(shù)據(jù)壓縮輸出的示例:
import java.io.*;
import java.util.zip.GZIPOutputStream;
public class CompressedOutput {
public static void main(String[] args) {
String inputText = "This is a test text for compression.";
try {
// 創(chuàng)建一個文件輸出流
FileOutputStream fos = new FileOutputStream("compressed_output.gz");
// 創(chuàng)建一個 GZIP 輸出流,將數(shù)據(jù)壓縮后寫入文件輸出流
GZIPOutputStream gzos = new GZIPOutputStream(fos);
// 創(chuàng)建一個 OutputStreamWriter,將字符數(shù)據(jù)轉(zhuǎn)換為字節(jié)數(shù)據(jù)并寫入 GZIP 輸出流
OutputStreamWriter osw = new OutputStreamWriter(gzos, "UTF-8");
// 將輸入文本寫入 OutputStreamWriter
osw.write(inputText);
// 關(guān)閉資源
osw.close();
gzos.close();
fos.close();
System.out.println("Compressed output file created successfully.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
在這個示例中,我們首先創(chuàng)建了一個 FileOutputStream
,然后使用 GZIPOutputStream
對其進行包裝,以便將數(shù)據(jù)壓縮后寫入文件。接下來,我們創(chuàng)建了一個 OutputStreamWriter
,將字符數(shù)據(jù)轉(zhuǎn)換為字節(jié)數(shù)據(jù)并寫入 GZIPOutputStream
。最后,我們將輸入文本寫入 OutputStreamWriter
,并關(guān)閉所有資源。
運行此程序后,會在當(dāng)前目錄下生成一個名為 compressed_output.gz
的壓縮文件。你可以使用支持 GZIP 格式的解壓縮工具(如 WinRAR、7-Zip 等)打開該文件,查看其中的內(nèi)容。