目录
一、DataOutputStream(数据输出流)
二、DataInputStream(数据输入流)
三、序列化流
1.1 ObjectOutputStream(对象字节输出流)
1.2 OutputStream(对象字节输入流)
四、补充
一、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集合已经实现了序列化接口!明天实践一下吧