如题

解决方案 »

  1.   

    我的理解是,在writeObject的时候,是把对象的引用内存的信息按二进制方式(也就是byte数组)输出到某个输出流,而readObject的时候,首先取到输入流的内容,也是一个二进制的byte数组,然后根据一些算法(比如第几个字节到第几个字节代表对象的类,第几个到第几个代表某个属性的内容等等),得到相应的信息后系统自动生成一个实例,然后分别去设置每个属性,最后以Object对象返回。大概就是这样吧。
      

  2.   

    ObjectInputStream 对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化。 ObjectOutputStream 和 ObjectInputStream 分别与 FileOutputStream 和 FileInputStream 一起使用时,可以为应用程序提供对对象图形的持久性存储。ObjectInputStream 用于恢复那些以前序列化的对象。其他用途包括使用套接字流在主机之间传递对象,或者用于编组和解组远程通信系统中的实参和形参。 ObjectInputStream 确保从流创建的图形中所有对象的类型与 Java 虚拟机中的显示的类相匹配。使用标准机制按需加载类。
    例子:
    readObject是从ObjectIputStream中读取对象。try {
    // resouces : vector instance and test.txt file
    Vector vec = new Vector();
    vec.add("a");
    vec.add("b");
    vec.add("c");
    File file = new File("d:\\1.txt");
    if (file.exists()) {
    file.delete();
    } // write vector instance to test.txt
    FileOutputStream fos = new FileOutputStream(file);
    ObjectOutputStream oos = new ObjectOutputStream(fos);
    oos.writeObject(vec); // read vector instance from test.txt
    FileInputStream fis = new FileInputStream(file);
    ObjectInputStream ois = new ObjectInputStream(fis);
    System.out.println((Vector) ois.readObject());
    } catch (Exception e) {
    e.printStackTrace();
    }
      

  3.   

    那readObject在读取数据时是怎么读得呢,是一个字节一个字节的读吗?
    我想为它添加一个进度条,不知道如何判断进度
      

  4.   

    请问,在readObject过程中,抛出IO异常是什么愿意导致的呢?