ByteArrayOutputStream和ZipOutputStream 怎么联合使用
时间: 2023-10-22 17:23:42 浏览: 34
ByteArrayOutputStream是一个可以将数据写入内存缓冲区的输出流。而ZipOutputStream是一个可以将数据压缩成ZIP格式的输出流。这两个输出流可以联合使用,将数据先写入ByteArrayOutputStream中,然后再将其压缩成ZIP格式。
下面是一个示例代码:
```java
import java.io.*;
import java.util.zip.*;
public class ZipExample {
public static void main(String[] args) throws IOException {
// 创建一个字节数组输出流
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// 创建一个Zip输出流
ZipOutputStream zos = new ZipOutputStream(baos);
// 压缩文件内容
String content = "Hello, world!";
ZipEntry entry = new ZipEntry("test.txt");
zos.putNextEntry(entry);
zos.write(content.getBytes());
zos.closeEntry();
// 关闭Zip输出流
zos.close();
// 将压缩后的数据写入文件
FileOutputStream fos = new FileOutputStream("test.zip");
fos.write(baos.toByteArray());
fos.close();
}
}
```
在上面的示例中,我们先创建了一个ByteArrayOutputStream对象baos,然后创建一个ZipOutputStream对象zos,将其与baos关联。接下来,我们使用zos将数据压缩成ZIP格式,并将其写入baos中。最后,我们将baos中的数据写入文件中,即得到了一个压缩后的ZIP文件。