package com.io;
import java.io.ByteArrayOutputStream;
import java.io.Externalizable;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class ExternalizableDemo {
public static void main(String args[]) {
testObjectSeri();
testObjectInSeri();
}
/**
* 对象序列化测试
*/
public static void testObjectSeri() {
Person person = new Person("test中文", "12", "abc");
FileOutputStream fos = null;
ObjectOutputStream oos = null;
try {
fos = new FileOutputStream("D:\\Temp\\person.dat");
oos = new ObjectOutputStream(fos);
oos.writeObject(person);
} catch (FileNotFoundException e) {
System.out.println("找不到指定的文件!");
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
oos.flush();
oos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 对象反序列化测试
*/
public static void testObjectInSeri() {
FileInputStream fis = null;
ObjectInputStream ois = null;
Person person = null;
try {
fis = new FileInputStream("D:\\Temp\\person.dat");
ois = new ObjectInputStream(fis);
person = (Person) ois.readObject();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
try {
ois.close();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println(person.toString());
}
}
/**
* 测试序列化所用的类
*/
class Person implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String username;
private String cardNumber;
private transient String password;
public Person(String username, String cardNumber, String password) {
this.username = username;
this.cardNumber = cardNumber;
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getCardNumber() {
return cardNumber;
}
public void setCardNumber(String cardNumber) {
this.cardNumber = cardNumber;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String toString() {
StringBuffer sb = new StringBuffer(this.getClass().getName());
sb.append("[");
sb.append("\n\t");
sb.append("username=" + this.username);
sb.append("\n\t");
sb.append("cardNumber=" + this.cardNumber);
sb.append("\n\t");
sb.append("password=" + this.password);
sb.append("]");
return sb.toString();
}
// class Person implements Externalizable {
// /**
// *
// */
// private static final long serialVersionUID = 1L;
// private String username;
// private String cardNumber;
// private String password;
//
// public Person(String username, String cardNumber, String password) {
// this.username = username;
// this.cardNumber = cardNumber;
// this.password = password;
// }
//
// public String getUsername() {
// return username;
// }
//
// public void setUsername(String username) {
// this.username = username;
// }
//
// public String getCardNumber() {
// return cardNumber;
// }
//
// public void setCardNumber(String cardNumber) {
// this.cardNumber = cardNumber;
// }
//
// public String getPassword() {
// return password;
// }
//
// public void setPassword(String password) {
// this.password = password;
// }
//
// public String toString() {
// StringBuffer sb = new StringBuffer(this.getClass().getName());
// sb.append("[");
// sb.append("\n\t");
// sb.append("username=" + this.username);
// sb.append("\n\t");
// sb.append("cardNumber=" + this.cardNumber);
// sb.append("\n\t");
// sb.append("password=" + this.password);
// sb.append("]");
// return sb.toString();
// }
//
// @Override
// public void writeExternal(ObjectOutput out) throws IOException {
//
// }
//
// @Override
// public void readExternal(ObjectInput in) throws IOException,
// ClassNotFoundException {
//
// }
}