溫馨提示×

利用OutputStreamWriter實現(xiàn)數(shù)據(jù)的壓縮輸出

小樊
83
2024-09-04 08:32:44
欄目: 編程語言

OutputStreamWriter 本身不支持數(shù)據(jù)壓縮,但你可以結(jié)合 GZIPOutputStream 或其他壓縮庫來實現(xiàn)數(shù)據(jù)的壓縮輸出。下面是一個使用 GZIPOutputStreamOutputStreamWriter 實現(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)容。

0