zoukankan      html  css  js  c++  java
  • 对象流,它们是一对高级流,负责即将java对象与字节之间在读写的过程中进行转换。 * java.io.ObjectOutputStream * java.io.ObjectInputStream

    package seday06;

    import java.io.Serializable;
    import java.util.Arrays;

    /**
    * @author xingsir
    * 使用当前类来测试对象流的对象读写操作
    * 当前类实例若想被对象流进行读写,那么必须实现接口:java.io.Serializable
    */
    public class Person implements Serializable {
    private static final long serialVersionUID = 1L; //鼠标放到Person位置然后add generate serial version ID生成
    private String name;//姓名
    private int age;//年龄
    private String gender;//性别
    /*
    * transient关键字
    * 被其修饰的属性在该对象进行序列化时值会被忽略。 忽略不必要的属性值可以达到对象序列化时的"瘦身"操作, 减少资源的开销。
    */
    private transient String[] otherInfo;
    /*
    * 右键点-Source-点 -generate constructor using fields,选择要生成的属性
    * 这个选项自动生成带参数的 构造函数
    */
    public Person(String name, int age, String gender,String[] otherInfo) {
    super();
    this.name = name;
    this.age = age;
    this.gender = gender;
    this.otherInfo = otherInfo;
    }
    /*
    * 右键点-Source-点 -generate getters and setters,选择要生成的属性
    */
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public int getAge() {
    return age;
    }
    public void setAge(int age) {
    this.age = age;
    }
    public String getGender() {
    return gender;
    }
    public void setGender(String gender) {
    this.gender = gender;
    }
    public String[] getOtherInfo() {
    return otherInfo;
    }
    public void setOtherInfo(String[] otherInfo) {
    this.otherInfo = otherInfo;
    }
    public String tosString() {
    return name+","+age+","+gender+","+
    Arrays.toString(otherInfo);
    }

    }

    //======================================================================

    package seday06;

    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectOutputStream;

    /**
    * @author xingsir
    * 对象流: 它们是一对高级流,负责即将java对象与字节之间在读写的过程中进行转换。
    * java.io.ObjectOutputStream
    * java.io.ObjectInputStream
    */
    public class OosDemo {

    public static void main(String[] args) throws IOException {
    /*
    *创建一个person_obj.txt文件
    * 将一个Person实例写入文件person_obj.txt中
    */
    String name="灭霸";
    int age=300;
    String gender = "男";
    String[] otherInfo = {"会弹响指","身材高大","为减轻地球资源做出杰出贡献"};
    Person person=new Person(name, age, gender,otherInfo);
    System.out.println(person);
    FileOutputStream fos=new FileOutputStream("person_obj.txt");
    ObjectOutputStream oos =new ObjectOutputStream(fos);
    /*
    * writeObject方法是ObjectOutputStream提供的方法, 作用是将给定的对象按照其结构转换为一组字节,
    * 然后再将字节通过其连接的流写出。实际转换的字节比该对象保存的内容要大,因为还要包含该对象的结构信息等内容。
    */
    /*
    * 下面写对象时每个流负责的工作分别为:对象流首先将对象按照其结构转换为一组字节, 这个过程称为:对象序列化
    *
    * 序列化后的字节在经过文件输出流最终写入了文件(写入文件就等于写入了磁盘做长久保存,关机数据
    * 也不会丢失),而这个过程称为:数据持久化
    */
    oos.writeObject(person);
    System.out.println("写出完毕成");
    oos.close();
    }

    }

    //====================================================================================

    package seday06;

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

    /**
    * @author xingsir
    * 对象输入流 ObjectInputStream
    */
    public class OiSDemo {

    public static void main(String[] args) throws IOException,ClassNotFoundException{
    //读取文件中字节
    FileInputStream fis=new FileInputStream("person_Obj.txt");
    //对象输入流
    ObjectInputStream ois= new ObjectInputStream(fis);
    // readObject的工作进行对象的反序列化
    Person person =(Person)ois.readObject();//强制转换类型
    System.out.println(person);//打印

    ois.close();//关闭

    }

    }

  • 相关阅读:
    网络虚拟化技术(二): TUN/TAP MACVLAN MACVTAP (转)
    利用Linux信号SIGUSR1调试程序
    hugepage优势
    Linux top命令中CPU信息的详解(转)
    如何快速学好Shell脚本? 转
    转:基于TLS1.3的微信安全通信协议mmtls介绍
    docker 支持ipv6 (核心要点是ndp需要把docker内的ip全部加入到ndplist中来)
    老毛子 Padavan 路由器固件开启教育网 IPv6 并实现IPv6转发
    Centos Firefox中文乱码
    浅析AnyCast网络技术
  • 原文地址:https://www.cnblogs.com/xingsir/p/12028124.html
Copyright © 2011-2022 走看看