我用writeObject()写了一个文件,现在我想用readObject()读出这个文件,可是不知有什么方法能判断读到了文件的末尾,每次读都抛出java.io.EOFException异常。
ObjectInputStream in = new ObjectInputStream( new FileInputStream("D:\\aa.txt"));//aa我用writeObject()写了一个文件
            while (条件){//想知道这用一个什么条件能判断文件的结尾
                Area mystery = (Area) in.readObject();//此处读到文件尾抛出异常
                int areaid = mystery.getAreaID();
                String areaname = mystery.toString();
                int volt = mystery.getVolt();
                try {
                    String strSQL =
                            "insert into Area(area_id,area_name,nn_volt) values(?,?,?)";
                    PreparedStatement pstmtSQL = conOracle.prepareStatement(
                            strSQL);
                    pstmtSQL.setInt(1, areaid);
                    pstmtSQL.setString(2, areaname);
                    pstmtSQL.setInt(3, volt);
                    pstmtSQL.executeUpdate();
                    pstmtSQL.close();
                } catch (Exception ex) {
                    System.err.println(ex);
                }
            }
            in.close();
呵呵 我上csdn费劲 打开网页慢 有时还打不开 所以只有20分能给:(

解决方案 »

  1.   

    Area mystery;
    while((mystery = (Area) in.readObject())!=null){
    }这样可以吧
      

  2.   

    我试了一下楼上的方法好象不行.
    我也没搞出什么可行的条件.不过,提供一个其它解决的方法.不一定能满足你的要求:
    try{
      while(ture){
      Area mystery = (Area) in.readObject();
      .....
      }
    }
    catch(EOFException eof){
      return;//这里就应该就是表明到头了,做到头应该做的事.
    }
    catch(Exception e){
      e.printStackTrace();
    }
    小弟不才,见笑了
      

  3.   

    to ztc16627: ((mystery = (Area) in.readObject())!=null)这个条件不行,因为它是先进行in.readObject()再判断,在in.readObject()时就抛出异常了。to lijie2049: hehe 你的是一种解决方法,我现在用的正是这种,不过我是想找一种根本的方法来解决这个问题,JDK支持ObjectStream的方法好象太少了。