南海网站制作公司百度竞价是什么
ZipOutputStream类属于OutputStream间接类,它是一个用于输出流,可以将文件和目录压缩成ZIP格式的存档文件(将文件或目录写入ZIP文件)。
构造方法
该类提供两个构造方法区别在于是否允许用户自定义字符集(Charset)
,第一个构造方法默认将字符集固定为 StandardCharsets.UTF_8。
常用方法
1. public void putNextEntry(ZipEntry e);
开始写入新的 ZIP 文件条目并将流定位到条目数据的开头。ZipEntry就是一个条目(条目就是ZIP文件中的文件见下图案例)
2.public void closeEntry();
关闭当前 ZIP 条目并定位流以写入下一个条目
3.public void setLevel(int level)
设置条目压缩级别
4.ZipOutputStream 间接继承了 OutputStream 所以实现了 OutputStream 的方法,write,finish等
简单使用
package com.zcf;import com.alibaba.fastjson.annotation.JSONField;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;/*** @Description: StudentEntity* @Author: 风清* @CreateTime: 2025-03-16 14:35*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class StudentEntity {@JSONField(name = "student_name",ordinal = 1)private String name;@JSONField(name = "student_age",ordinal = 2)private Integer age;
}
/*** @Description: FileTest 测试类* @Author: 风清* @CreateTime: 2025-03-13 19:53*/
public class JsonFileTest {@Testpublic void test() {//指定ZIP文件位置File file = new File("E:\\javatest\\StudentTest.zip");//构建压缩数据StudentEntity student1 = StudentEntity.builder().name("王二").age(18).build();StudentEntity student2 = StudentEntity.builder().name("张三").age(18).build();StudentEntity student3 = StudentEntity.builder().name("李四").age(18).build();ArrayList<StudentEntity> students = Lists.newArrayList(student1, student2, student3);/**创建ZIP压缩文件对象在for循环外创建:这里解释一下为什么不在循环内创建1.FileOutputStream 默认构造方法会导致每次创建FileOutputStream 对象时,覆盖掉原来内容2.FileOutputStream(File,true)---zip文件是一种特定格式的文件,追加模式会导致zip格式损坏**/try (FileOutputStream fos = new FileOutputStream(file); ZipOutputStream zos = new ZipOutputStream(fos)) {for (StudentEntity student : students) {String zip = student.getName() + student.getAge() + ".json";zos.setLevel(1); //设置压缩等级zos.putNextEntry(new ZipEntry(zip)); //设置文件条目zos.write(JSON.toJSONString(student).getBytes()); //写入数据zos.closeEntry();//关闭条目,以写入下一条//注意这里不要习惯性finish,可以理解为zip包是一个文件,finish会导致zip写入结束//zos.finish();//习惯性刷}}catch (IOException e) {throw new RuntimeException(e);}}
}
结果