在Java中实现zlib压缩数据的写入可以使用DeflaterOutputStream
类。以下是一个示例代码:
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.Deflater;
import java.util.zip.DeflaterOutputStream;
public class Main {
public static void main(String[] args) {
String input = "Hello, world!";
byte[] inputBytes = input.getBytes();
// 创建一个Deflater对象
Deflater deflater = new Deflater();
// 创建一个ByteArrayOutputStream用于存储压缩后的数据
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
// 创建一个DeflaterOutputStream,将其与ByteArrayOuputStream关联
DeflaterOutputStream deflaterOutputStream = new DeflaterOutputStream(outputStream, deflater);
try {
// 写入数据并关闭流
deflaterOutputStream.write(inputBytes);
deflaterOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
// 获取压缩后的数据
byte[] compressedBytes = outputStream.toByteArray();
// 打印压缩后的数据
System.out.println("Compressed data: " + new String(compressedBytes));
}
}
在上面的示例中,我们首先创建一个Deflater
对象和一个ByteArrayOutputStream
对象,然后创建一个DeflaterOutputStream
对象,将其与ByteArrayOutputStream
关联。接着我们将要压缩的数据写入DeflaterOutputStream
,最后关闭流并获取压缩后的数据。
需要注意的是,DeflaterOutputStream
会自动处理数据的压缩,无需手动调用压缩方法。