ObjectInputStream
ObjectOutputStream 使用在对象串行化时候,建议你看看这部分  private static Object load(File f) throws IOException, ClassNotFoundException {
    ObjectInputStream in = new ObjectInputStream(new FileInputStream(f));
    return in.readObject();
  }  /**
   * 从指定文件读取消息队列
   */
  void loadRecord() {
    File f = new File(filename);
    try {
      this.messages = ( (msgRecord) load(f)).messages;
       }
    catch (Exception e) {
      System.err.println(e);
    }
  }

解决方案 »

  1.   

    ?看不懂,和我的代码有区别吗?只不过是没有使用循环得到文件中存储的所有对象而已。
    是不是这样存储对象没有意义?那么在scjd的考试中大家是如何解决的数据库的存储问题的?没有使用object存储吗?
      

  2.   

    让它去报错吧,又没关系的。
    你不要让它显示,不就可以了。public Vector ReadData() {
        Vector v=new Vector();   
        ObjectInputStream objin=null; 
        try{
            FileInputStream fileout = new FileInputStream(this.m_szFilePath);
            objin = new ObjectInputStream(fileout);
            
            while(objin.available()!=-1){
              Object obj= objin.readObject();
              v.addElement(obj);
            }
        }
        catch(Exception e){
        }
        try {
              objin.close();  
          }
          catch (Exception ex) {
            
          }
        return v;
      }
      

  3.   

    to  newman0708(nch)我开始也是这样想的,但是后来我发现我需要准确的错误信息,通过这个信息得到究竟是那里错了。而且这样虽然能够解决问题,但是对于以后的开发却存在了一个bug。恳请各位指点。分不够可以在开帖。
      

  4.   


    while(ois.available()!=-1)  //如果没有这一句则读出数据
          {
            s = s + (String)ois.readObject();
          }
    之前加一句if(ois!=null)试试
    有可能读文件时就出现问题(猜的)
      

  5.   

    to Hodex(小何才露尖尖角)不是这里的错误,我跟踪时发现已经读出了文件中的对象,但是如果存在2个对象,则在读完两个的时候,还会接着读,这时候就出错了。
      

  6.   

    ois.available()不是返回可读的对象数么
    是不是应该用ois.available()!=0
      

  7.   

    to Hodex(小何才露尖尖角)使用ois.available()!=0 读不到任何数据。
      

  8.   

    to amjn(神雕过儿)可以工作,使用的事fio.available()!=0。
    谢谢了,能讲一讲问什么吗?
      

  9.   

    我是从来不用available这个东西的。
      

  10.   

    sorry,俺写上去的是中文!=,应该是英文 !=
      

  11.   

    to taolei(实在无聊)那如何判断?