可能是你在写入的时候没有在最后Close那个ObjectOutStream,造成流的结尾没有正常结束

解决方案 »

  1.   

    有没有IMPORT那个名字啊???
      

  2.   

    try
    {
    outputFile = new FileOutputStream ("D:\\dataFile.txt");
    ObjectOutputStream serializeStream = new ObjectOutputStream (outputFile);

    while (i < 5) 
    {
    r = System.in.read ();
    strTmp = "";
    while (r != 13)
    {
    if (((r >= 48) && (r <= 57)) || r == 46)
    {
    strTmp += (char) r;
    } r = System.in.read ();
    }
    serializeStream.writeDouble(Double.parseDouble(strTmp));
    i ++;
    }
    serializeStream.flush ();
    }
    catch (Exception e)
    {
    System.out.println ("Error during serialization");
    }
    finally
    {
    try
    {
    outputFile.close ();
    }
    catch (Exception e)
    {
    System.out.println (e.toString ());
    }
    }
      

  3.   

    楼上的
    你没有看清楚吧
    上面这个简单啊
    而且也没有什么技巧再具体一点我的问题:我想把已经写入的几个对象读到定义好的一个对象数组里面
    但是读的时候我 只能读出来第一个对象  别的就读不出来了用for循环的时候 try{
    FileInputStream fi=new FileInputStream("stu.txt");
             ObjectInputStream  si=new ObjectInputStream(fi);
    for(int i=0;(Student)si.readObject()!=null;i++)
    {
    stu[i]=(Student)si.readObject();

    }si.close();  
      }catch(Exception e){System.out.println(e);}给出这样的异常  java.io.StreamCorruptedException是不是每次读的时候确定读的位置  如果是的话  怎么确定才好高手再看看啊
    是不是能给出一个具体的代码
      

  4.   

    问题在 ObjectInputStream  si=new ObjectInputStream(fi);
      

  5.   

    Read from an object stream violates internal consistency checks.
      

  6.   

    说清楚点吧
    我还是不明白ObjectInputStream  si=new ObjectInputStream(fi);这一句怎么有问题了?
    最好给写两句代码
    谢谢
      

  7.   

    文件格式不对
    FileInputStream fi=new FileInputStream("stu.txt");
    //stu.txt必须是用 FileOutputStream 格式输出的文件
    写:
    FileOutputStream fos = new FileOutputStream("t.tmp");
    ObjectOutputStream oos = new ObjectOutputStream(fos);
    Date date = new Date(200,9,1);
    oos.writeObject(date);写好后读:
    FileInputStream fis = new FileInputStream("t.tmp");
    ObjectInputStream ois = new ObjectInputStream(fis);
    Date date = (Date) ois.readObject();
    System.out.println(date);
      

  8.   

    FileOutputStream fos = new FileOutputStream("t.tmp");
    ObjectOutputStream oos = new ObjectOutputStream(fos);
    Date date = new Date(200,9,1);
    oos.writeObject(date);
    oos.close();//必须先close,否则会出问题的!写好后读:
    FileInputStream fis = new FileInputStream("t.tmp");
    ObjectInputStream ois = new ObjectInputStream(fis);
    Date date = (Date) ois.readObject();
    System.out.println(date);
      

  9.   

    晕啊   大哥们!to:kevingn我的文件格式是对的  我是先用ObjectOutputStream写入的to:ChDw这样我也会写的
    我说的是我可以读出来对象
    但是我要的是读出来多个对象  
    读一个我会 但是读多个的话就不行了
    尤其是用循环控制的时候更有问题   
    怎么循环我只能读出来一个 而不是全部都能读出来再给看看吧   :(谢谢~~
      

  10.   

    唉留下  QQ:123162040
          邮箱:[email protected]希望有大哥,大姐可以给在线指导  
    谢谢!!!!
      

  11.   

    for(int i=0;(Student)si.readObject()!=null;i++)
    ______________________________________________
    此时你已经读出了一个Students了,指针指向下一个对象了;
    ----------------------------------------------
    {
    stu[i]=(Student)si.readObject();
    ----------------------------------------------
    读出第二个,放入数组;
    ----------------------------------------------
    }
    因为你只写进了3个,所以,只能读出一个。你多写几个试一试,每隔一个,才放一个到数组中;
      

  12.   

    public static void main(String [] arg)
     {
       try{
         FileOutputStream fos = new FileOutputStream("t.txt");
         ObjectOutputStream oos = new ObjectOutputStream(fos);
         Date date;
         for(int i = 0 ;i <5; i ++)
         {
           date = new Date(200, 9, 1);
           oos.writeObject(date);
         }
         oos.close(); //必须先close,否则会出问题的!
         date = null;
         //写好后读:
         FileInputStream fis = new FileInputStream("t.txt");
         ObjectInputStream ois = new ObjectInputStream(fis);
         for(int i = 0 ; i < 5 ; i ++)
         {
           date = (Date) ois.readObject();
           System.out.println(date);
         }
       }catch(Exception e){e.printStackTrace();}
     }
    用上面大哥的东西,这样写好像没有错啊