ObjectOutputStream out=new ObjectOutputStream(new OutputStream("file"));ObjectInputStream out=new ObjectInputStream(new InputStream("file"));
//这时将会抛出一个异常EOFException于是我想: if(file里面的没保存有Object对象){创建一个对象并写入ObjectOutputStream最后存入file里}
这样在执行ObjectInputStream out=new ObjectInputStream(new InputStream("file"));这句代码的时候就不会抛出EOFException异常了归根到底我就是要判断一个文件里是否存储有一个对象,假如没有则写入。对于对象流的输出联系到序列化文件格式的问题,我很头痛,希望得到各位的解答

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【llpoo】截止到2008-07-03 18:38:38的历史汇总数据(不包括此帖):
    发帖的总数量:4                        发帖的总分数:240                      
    结贴的总数量:3                        结贴的总分数:140                      
    无满意结贴数:1                        无满意结贴分:5                        
    未结的帖子数:1                        未结的总分数:100                      
    结贴的百分比:75.00 %               结分的百分比:58.33 %                  
    无满意结贴率:33.33 %               无满意结分率:3.57  %                  
    楼主加油
      

  2.   

    没有创建之前怎么读呢?我意思是用new ObjectOutputStream(new OutputStream("file")); 创建了了文件,
    但是我没有writeObject(),所以文件里是不存在Object对象的,而我现在想要在读取这个文件前判断一下是否存在了
    Object对象。
      

  3.   

    文件是存在的,读的时候抛出EOFException这个异常,我本想try这个EOFException但是问题仍然存在,大家动手试下,谢谢了
      

  4.   

    既然读取失败了,就说明该文件里没有被序列化的类或者你没有按照正确的顺序读取,比如人家在序列化该类之前先写了个
    writeInt(123)什么的那么你一上来readObject()当然也有错了~所以直接用try{}catch{}语句,如果捕获到异常就有以上2问题。
      

  5.   

    ObjectInputStream in = new ObjectInputStream( new InputStream("file")):
    ObjectOutputStream out=new ObjectOutputStream(new OutputStream("file")); String line ="";
    while((line =in.readLine())!=-1){
         ou.println(line);
    }
    in.close();
    out.close();
      

  6.   

    如果只是要简单的判断文件是否存在的话可以这样尝试一下:
    boolean filecheck = file.exists()&&file.length()>0;
      

  7.   

    呵呵,经过昨晚回去思考一下,落月之痕的回复给了我解决这个问题线索,但并非是没有被序列化也不是没有按正确的顺序,我们知道当一个对象流(ObjectOutputStream)往外写出数据的时候, 是会将对象序列化的,序列化后的数据按照16进制格式写入文件,每个由OutputStream创建的文件都有一个文件头,假如没有存入对象数据那么这个文件只有文件头,假如存有对象则有个表示类的序号73(byte 是115)。于是就可以根据文件里有没有73这个数据来判断是否存在Object对象了,而实际上我也做到了。
      

  8.   

    那个eofexcepti的解决带给共享一下吧    已经被这个问题困扰很久了