java序列化
Java 提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据、有关对象的类型的信息和存储在对象中数据的类型。
将序列化对象写入文件之后,可以从文件中读取出来,并且对它进行反序列化,也就是说,对象的类型信息、对象的数据,还有对象中的数据类型可以用来在内存中新建对象
import java.io.Serializable;
public class User implements Serializable
{
public String account;
public String password;
public String name;
public int number;
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public String toString()
{
return "account:"+account+"password:"+password+"name:"+name+"number:"+number;
}
}
一个类的对象要想序列化成功,必须满足两个条件:
必须实现 Serializable 接口。
序列化对象:
import java.io.*;
public class Demo
{
public static void main(String [] args)
{
User e = new User();
e.account = "zhangsan";
e.password = "123456";
e.name="zhangsan";
e.number = 1235465797;
try
{
FileOutputStream fileOut =new FileOutputStream("E:\\code\\java ex\\Test\\test");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(e);
out.close();
fileOut.close();
System.out.printf("注册成功!");
}catch(IOException i)
{
i.printStackTrace();
}
}
}
反序列化对象:
public class Demo
{
public static void main(String [] args)
{
User e = null;
try
{
FileInputStream fileIn = new FileInputStream("E:\\code\\java ex\\Test\\test");
ObjectInputStream in = new ObjectInputStream(fileIn);
e = (User) in.readObject();
in.close();
fileIn.close();
}catch(IOException i)
{
i.printStackTrace();
return;
}catch(ClassNotFoundException c)
{
c.printStackTrace();
return;
}
System.out.println(e.toString());
}
}
经过反序列化后就能输出在上面序列化我们存入文件中的内容。