测试对象
public class User implements Serializable {
Long serialVersionUID = 1L;
private Long userId;
private String userName;
private String password;
public User(Long userId, String userName, String password) {
this.userId = userId;
this.userName = userName;
this.password = password;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
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;
}
@Override
public String toString() {
return "User{" +
"userId=" + userId +
", userName='" + userName + '\'' +
", password='" + password + '\'' +
'}';
}
}
注意点:一定要进行实现序列化和反序列化 实现Serializable接口是将对象序列化,序列化的本质是将一个对象转成流。定义了serialVersionUID可以进行反序列化,值无所谓,但是一定要有这个属性
写入文件对象
public class ObjectOutputStreamDemo {
public static void main(String[] args) {
File file = new File("d:\\classTest.txt");
ObjectOutputStream objectOutputStream = null;
OutputStream outputStream = null;
try {
outputStream = new FileOutputStream(file);
objectOutputStream = new ObjectOutputStream(outputStream);
//objectOutputStream.writeUTF("www.baidu.com");
objectOutputStream.writeObject(new User(1L,"zhong","123456"));
objectOutputStream.flush();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
outputStream.close();
objectOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
读取文件对象
public class ObjectInputStreamDemo {
public static void main(String[] args) {
File file = new File("d:\\classTest.txt");
InputStream inputStream = null;
ObjectInputStream objectInputStream = null;
try {
inputStream = new FileInputStream(file);
objectInputStream = new ObjectInputStream(inputStream);
//System.out.println(objectInputStream.readUTF());
Object o = objectInputStream.readObject();
if(o instanceof User){
User user = (User) o;
System.out.println(user);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
try {
inputStream.close();
objectInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}