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();//关闭

    }

    }

  • 相关阅读:
    ArcGIS
    gdal 在 vs2005中的安装
    ArcView ArcEditor ArcInfo区别
    从自行车掉链想到的
    实现带有身份验证的WebService
    研究一下全文索引
    【转】Com和.Net互操作规范
    TDSSNIClient 初始化失败,出现错误 0x7e,状态代码 0x60。
    整理最近新学到的几种sql写法(一)动态“循环”更新表内数据
    整理多个技术点的sql综合应用:(开拓思路,SELECT子句内嵌子查询)
  • 原文地址:https://www.cnblogs.com/xingsir/p/12028124.html
Copyright © 2011-2022 走看看