15.对象流

1.对象输出流-基本数据类型

import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;

public class Dome15 {
   public static void main(String[] args) {
       ObjectOutputStream oos = null;
       try {
           //创建对象输出流对象
           oos = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream("d:/c.txt")));
           oos.writeInt(123);
           oos.writeChar('哈');
           oos.writeUTF("你好");
           oos.flush();
      }catch (Exception e){
           e.printStackTrace();
      }finally {
           try {
               if (oos!=null){
                   oos.close();
              }
          }catch (Exception e){
               e.printStackTrace();
          }
      }
  }
}

 

2.对象输入流-基本数据类型

import java.io.*;

public class Dome16 {
   public static void main(String[] args) {
       ObjectInputStream ois = null;
       try {
           //创建对象输入流对象
           ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream("d:/c.txt")));
           //注意:对象输入流读取顺序要和对象输出流一致
           System.out.println(ois.readInt());
           System.out.println(ois.readChar());
           System.out.println(ois.readUTF());
      }catch (Exception e){
           e.printStackTrace();
      }finally {
           try {
               if (ois!=null){
                   ois.close();
              }
          }catch (Exception e){
               e.printStackTrace();
          }
      }
  }
}

 

3.序列化对象(将内存中的java对象通过序列化的方式写入到磁盘文件中)

将对象序列化到对象,被序列化的对象必须要实现Serializable序列化接口,否则会抛出异常

创建被序列化的对象
import java.io.Serializable;

public class User implements Serializable {
   private int id;
   private String name;

   //无参构造
   public User() {
  }

   //有参构造
   public User(int id, String name) {
       this.id = id;
       this.name = name;
  }

   //get set 方法
   public int getId() {
       return id;
  }

   public void setId(int id) {
       this.id = id;
  }

   public String getName() {
       return name;
  }

   public void setName(String name) {
       this.name = name;
  }
}
序列化User对象
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;

public class Dome17 {
   public static void main(String[] args) {
       ObjectOutputStream oos = null;
       try {
           //创建对象流
           oos = new ObjectOutputStream(new FileOutputStream("d:/test.txt"));
           //实例化被序列对象
           User user = new User(18, "林");
           //序列化User对象
           oos.writeObject(user);
           //刷新
           oos.flush();
      } catch (Exception e) {
           e.printStackTrace();
      } finally {
           try {
               if (oos != null) {
                   oos.close();
              }
          } catch (Exception e) {
               e.printStackTrace();
          }
      }
  }
}

 

4.对象反序列化

import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;

public class Dome18 {
   public static void main(String[] args) {
       ObjectInputStream ois = null;
       try {
           //创建对象流
           ois = new ObjectInputStream(new FileInputStream("d:/test.txt"));
           //读取文件中的对象
           User user = (User) ois.readObject();
           //获取存在对象中的信息
           System.out.println(user.getId() + user.getName());
      } catch (Exception e) {
           e.printStackTrace();
      } finally {
           try {
               if (ois != null) {
                   ois.close();
              }
          } catch (Exception e) {
               e.printStackTrace();
          }
      }
  }
}

 

 

posted @ 2022-04-14 15:44  阳光下的承诺  阅读(33)  评论(0)    收藏  举报