Java中的IO序列化

对象流:

  • 对象流:ObjectOutputStream

    • 增强了缓冲区功能
    • 增强了读写8种基本数据类型和字符串功能
    • 增强了读写对象的功能
      • ReadObject()从流中读取一个对象
      • wirteObject(object obj)向流中写入一个对象
  • 使用流传输对象的过程称为序列化,反序列化

    • 序列化

      /*
      * 使用ObjectOutputStream实现对象的序列化
      * 要求:序列化的类必须要实现Serializable接口
      * */
      public class TestObjectOutputStream {
          public static void main(String[] args) throws  Exception  {
              //1.创建对象流
              FileOutputStream fos=new FileOutputStream("f:\\zhangsan.jpg");
              ObjectOutputStream oos=new ObjectOutputStream(fos);
              //2.序列化
              Student zhangsan=new Student("张三",101);
              oos.writeObject(zhangsan);
              //关闭
              oos.close();
              System.out.println("序列化完毕");
      
          }
      }
      

      Student类

      //如果Student不实现 Serializable接口 则序列化报错
      public class Student implements Serializable {
           private String name;
           private int age;
      
          public Student(String name, int age) {
              this.name = name;
              this.age = age;
          }
      
          public Student() {
          }
      
          public String getName() {
              return name;
          }
      
          public int getAge() {
              return age;
          }
      
          public void setName(String name) {
              this.name = name;
          }
      
          public void setAge(int age) {
              this.age = age;
          }
      }
      
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaIO序列化是指将一个Java对象转换为字节流以便存储或传输,也可以将字节流转换回Java对象。序列化可以用于网络通信,分布式系统、数据库存储等场景。 Java序列化是通过实现Serializable接口来实现的,在这个接口没有定义任何方法,仅仅起到了一个标识作用。实现了Serializable接口的对象可以被序列化为字节流,然后再通过反序列化操作将其转换回对象。 Java序列化可以使用ObjectOutputStream和ObjectInputStream类来实现。ObjectOutputStream可以将一个对象序列化为字节流并输出到文件或网络流,而ObjectInputStream可以将字节流反序列化为对象。 下面是一个简单的Java序列化示例: ```java import java.io.*; public class SerializationDemo { public static void main(String[] args) { // 创建一个Person对象 Person person = new Person("Tom", 20); // 将Person对象序列化到文件 try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("person.ser"))) { out.writeObject(person); } catch (IOException e) { e.printStackTrace(); } // 从文件读取Person对象 try (ObjectInputStream in = new ObjectInputStream(new FileInputStream("person.ser"))) { Person p = (Person) in.readObject(); System.out.println(p); } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } } } class Person implements Serializable { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } } ``` 在上面的示例,我们创建了一个Person类,并实现了Serializable接口。然后将一个Person对象序列化到文件,并从文件读取并反序列化为Person对象。最后输出反序列化得到的Person对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值