本示例演示如何压缩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'}