本例子演示怎樣對java對象進行壓縮和解壓,主要用到java.util.zip包裏的GZIPInputStream和GZIPOutputStream類。 AjavaUser 爲要壓縮的對象,會被壓縮爲 ajavauser.dat文件,再經過解壓方法,讀取 ajavauser.dat 裏的數據。
java類對象:
java
package ajava.code.javase;app
import java.io.Serializable;ide
public class AjavaUser implements Serializable { 網站
private Long id;ui
private String username;this
private String password;spa
private String firstName;code
private String lastName;對象
public AjavaUser() {ip
}
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() {
StringBuilder sb = new StringBuilder();
sb.append("id=").append(id);
sb.append("; username=").append(username);
sb.append("; password=").append(password);
sb.append("; firstName=").append(firstName);
sb.append("; lastName=").append(lastName);
return sb.toString();
}
}
壓縮java對象:
package ajava.code.javase;
import java.io.FileOutputStream;
import java.io.File;
import java.io.ObjectOutputStream;
import java.io.IOException;
import java.util.zip.GZIPOutputStream;
public class AjavaZipObjectDemo {
public static void main(String[] args) {
AjavaUser admin = new AjavaUser();
admin.setId(new Long(1));
admin.setUsername("ajava");
admin.setPassword("123456");
admin.setFirstName("ajava.org");
admin.setLastName("java獨立社區");
AjavaUser foo = new AjavaUser();
foo.setId(new Long(2));
foo.setUsername("mark");
foo.setPassword("123456");
foo.setFirstName("ajava");
foo.setLastName("會員");
System.out.println("壓縮中...");
System.out.println(admin);
System.out.println(foo);
try {
FileOutputStream fos = new FileOutputStream(new File("ajavauser.dat"));
GZIPOutputStream gos = new GZIPOutputStream(fos);
ObjectOutputStream oos = new ObjectOutputStream(gos);
oos.writeObject(admin);
oos.writeObject(foo);
oos.flush();
oos.close();
gos.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
運行結果:
壓縮中...
id=1; username=ajava; password=123456; firstName=ajava.org; lastName=java獨立社區
id=2; username=mark; password=123456; firstName=ajava; lastName=會員
java對象壓縮文件的解壓:
package ajava.code.javase;
import java.io.FileInputStream;
import java.io.File;
import java.io.ObjectInputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
public class AjavaUnzipObjectDemo {
public static void main(String[] args) {
AjavaUser admin = null;
AjavaUser foo = null;
try {
FileInputStream fis = new FileInputStream(new File("ajavauser.dat"));
GZIPInputStream gis = new GZIPInputStream(fis);
ObjectInputStream ois = new ObjectInputStream(gis);
admin = (AjavaUser) ois.readObject();
foo = (AjavaUser) ois.readObject();
ois.close();
gis.close();
fis.close();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
System.out.println("ajava網站創始人 = [" + admin + "]");
System.out.println("ajava網站會員 = [" + foo + "]");
System.out.println("部分信息 = [" + admin.getFirstName() +"-"+admin.getLastName()+ "]");
}
}
運行結果:
ajava網站創始人 = [id=1; username=ajava; password=123456; firstName=ajava.org; lastName=java獨立社區]
ajava網站會員 = [id=2; username=mark; password=123456; firstName=ajava; lastName=會員]
部分信息 = [ajava.org-java獨立社區]