本示例演示如何压缩Java对象。我们使用压缩Java对象GZIPOutputStream,并将其传递ObjectOutputStream以将对象写入外部文件。我们将要压缩的User对象将由该对象表示。我们需要使User对象可序列化,因此它必须实现java.io.Serializable接口。您可以在下面查看完整的代码段。
package org.nhooo.example.zip;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.zip.GZIPOutputStream;
public class ZipObjectDemo {
public static void main(String[] args) {
User admin = new User();
admin.setId(1L);
admin.setUsername("admin");
admin.setPassword("secret");
admin.setFirstName("System");
admin.setLastName("Administrator");
User foo = new User();
foo.setId(2L);
foo.setUsername("foo");
foo.setPassword("secret");
foo.setFirstName("Foo");
foo.setLastName("Bar");
System.out.println("Zipping....");
System.out.println(admin);
System.out.println(foo);
File file = new File("user.dat");
try (FileOutputStream fos = new FileOutputStream(file);
GZIPOutputStream gos = new GZIPOutputStream(fos);
ObjectOutputStream oos = new ObjectOutputStream(gos)) {
oos.writeObject(admin);
oos.writeObject(foo);
oos.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}package org.nhooo.example.zip;
import java.io.Serializable;
public class User implements Serializable {
private Long id;
private String username;
private String password;
private String firstName;
private String lastName;
public User() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", firstName='" + firstName + '\'' +
", lastName='" + lastName + '\'' +
'}';
}
}运行代码片段将为我们提供以下输出:
Zipping....
User{id=1, username='admin', password='secret', firstName='System', lastName='Administrator'}
User{id=2, username='foo', password='secret', firstName='Foo', lastName='Bar'}