zoukankan      html  css  js  c++  java
  • java使用ObjectInputStream从文件中读取对象

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


    public class Main {

    /**
    *ObjectInputStream 使用示例
    */
    public void readPersons(String filename) {

      ObjectInputStream inputStream = null;

      try {

        //构造ObjectInputStream对象
        inputStream = new ObjectInputStream(new FileInputStream(filename));

        Object obj = null;

        while ((obj = inputStream.readObject()) != null) {

          if (obj instanceof Person) {

            System.out.println(((Person)obj).toString());
          }

        }

      } catch (EOFException ex) { //在读取到文件结束时触发此异常
        System.out.println("End of file reached.");
      } catch (ClassNotFoundException ex) {
        ex.printStackTrace();
      } catch (FileNotFoundException ex) {
        ex.printStackTrace();
      } catch (IOException ex) {
        ex.printStackTrace();
      } finally {
        //Close the ObjectInputStream
        try {
          if (inputStream != null) {
            inputStream.close();
          }
        } catch (IOException ex) {
          ex.printStackTrace();
        }
      }  
    }

      /**
      * @param args the command line arguments
      */
      public static void main(String[] args) {
        new Main().readPersons("myFile.txt");
      }
    }

    readObject方法:
    public final Object readObject() throws IOException,ClassNotFoundException

      从 ObjectInputStream 读取对象。对象的类、类的签名和类及所有其超类型的非瞬态和非静态字段的值都将被读取。可以使用 writeObject 和 readObject 方法为类重写默认的反序列化。由此对象引用的对象是可传递读取的,这样 readObject 即可重新构造这些对象的完全等价的图形。 
    通过完全还原根对象的所有字段及其引用的对象来完全还原根对象。此时,对象验证回调的执行顺序基于其注册优先级。回调在其个别还原时由对象(按照 readObject 特定方法)进行注册。 当 InputStream 中出现问题或者遇到不应反序列化的类时,将抛出异常。所有异常对于 InputStream 而言都是致命的,将使其处于不确定状态;这将持续到调用方忽略或恢复流状态。 
    指定者:
    接口 ObjectInput 中的 readObject
    返回:
    从流读取的对象 
    抛出: 
    ClassNotFoundException - 找不到序列化对象的类。 
    InvalidClassException - 序列化使用的类出了问题。 
    StreamCorruptedException - 流中的控制信息不一致。 
    OptionalDataException - 在流中而不是对象中找到了基本数据。 
    IOException - 任何常规的输入/输出相关的异常。这是readObject的全部描述,读不到正确的Object信息就报错 不会返回null来提示你

    参考:http://www.debugease.com/j2ee/171334.html

  • 相关阅读:
    Ganglia与Centreon整合构建智能化监控报警平台
    通过Centreon监控apache、MySQL、Hadoop服务状态
    分布式监控告警平台Centreon快速使用
    分布式监控数据采集系统Ganglia实战
    Zabbix与ELK整合实现对日志数据的实时监控
    Zabbix通过与微信、钉钉整合实现实时告警
    详解容器设计模式
    深入理解 Pod
    docker exec实现原理
    使用Docker部署应用以及容器数据卷Volume
  • 原文地址:https://www.cnblogs.com/Claire6649/p/5872910.html
Copyright © 2011-2022 走看看