目录
1.1 ObjectOutputStream(对象字节输出流)
一、DataOutputStream(数据输出流)
1. 作用:允许把数据和其类型一并写出去
public static void main(String[] args) {
try (
//1. 创建一个数据输出流包装低级字节输出流
DataOutputStream dos = new DataOutputStream(new FileOutputStream("E:\\developcode\\javacode\\javabase\\src\\com\\IO\\shuju\\test1.txt"));
){
dos.writeByte('a');
dos.writeInt(97);
dos.writeDouble(99.2);
dos.writeBoolean(false);
dos.writeUTF("明天会更好");
} catch (Exception e) {
e.printStackTrace();
}
}
二、DataInputStream(数据输入流)
1. 作用: 用于读取数据输出流写出去的数据
public static void main(String[] args) {
try (
DataInputStream dis = new DataInputStream(new FileInputStream("文件地址"));
){
//要按照写入的顺序来读取
System.out.println(dis.readByte());
System.out.println(dis.readInt());
System.out.println(dis.readDouble());
System.out.println(dis.readBoolean());
System.out.println(dis.readUTF());
} catch (Exception e) {
e.printStackTrace();
}
}
三、序列化流
1. 对象序列化:把java对象写入到文件中去
2. 对象反序列化:把文件里的java对象读出来
1.1 ObjectOutputStream(对象字节输出流)
1. 作用:可以把Java对象进行序列化,把Java对象存入到文件中去
注意:对象如果要参与序列化,必须实现序列化接口(java.io.Serializable)
public static void main(String[] args) {
try (
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("文件地址"));
){
//1. 创建一个Java对象
User u = new User("admin","董小姐",30,"nanshangnan");
//序列化对象到文件中去
oos.writeObject(u);
System.out.println("对象序列化成功!");
} catch (Exception e) {
e.printStackTrace();
}
}
1.2 OutputStream(对象字节输入流)
1. 作用:可以把Java对象进行反序列化:把存储在文件中的Java对象读入到内存中来
创建一个User对象
private String loginName; private String userName; private int age; //transient 是让passWord 不被序列化的 private transient String passWord;
序列化
public static void main(String[] args) {
try (
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("文件地址"));
){
//1. 创建一个Java对象
User u = new User("admin","董小姐",30,"nanshangnan");
//序列化对象到文件中去
oos.writeObject(u);
System.out.println("对象序列化成功!");
} catch (Exception e) {
e.printStackTrace();
}
}
反序列化
public static void main(String[] args) {
try (
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("E:\\developcode\\javacode\\javabase\\src\\com\\IO\\xuliehua\\test1.txt"));
){
User u = (User) ois.readObject();
System.out.println(u);
} catch (Exception e) {
e.printStackTrace();
}
}
四、补充
如果要一次序列化多个对象,咋整?
用一个ArrayList集合存储多个对象,然后直接对集合进行序列化即可注意:ArrayList集合已经实现了序列化接口!明天实践一下吧