2013-10-22 38 views
0

在打印文件的第一個記錄之後發生此錯誤-java.io.StreamCorruptedException:無效的類型代碼:AC 我正在寫入對象到文件用下面的代碼和讀取所有的對象放入文件在Java中讀取對象錯誤java.io.StreamCorruptedException:無效的類型代碼:AC

演示代碼

import java.io.*; 
import java.util.*; 
class Student implements Serializable 
{ 
    int no; 
    String nm; 
    void set(int no,String nm) 
    { 
     this.no=no; 
     this.nm=nm; 
    } 
    void get() 
    { 
     System.out.println(no+"--"+nm); 
    } 
} 
class write 
{ 
    public static void main(String[] args) 
    { 
     try 
     { 
      int no; 
      String s; 
      ObjectOutputStream oi=new ObjectOutputStream(new FileOutputStream("d:\\abc1.txt",true)); 
      Scanner sc=new Scanner(System.in); 
      System.out.print("Enter Roll No:"); 
      no=sc.nextInt(); 
      System.out.print("Enter Name:"); 
      sc.nextLine(); 
      s=sc.nextLine(); 
      Student s1=new Student(); 
      s1.set(no,s); 
      oi.writeObject(s1); 
      oi.close(); 
      Student sp; 
      ObjectInputStream ooi=new ObjectInputStream(new FileInputStream("d:\\abc1.txt")); 
      while((sp=(Student)ooi.readObject())!=null) 
      { 
       sp.get(); 
      } 
      ooi.close(); 
     } 
     catch (Exception ex) 
     { 
      System.out.println(ex); 
     } 
    } 
} 

請幫我看所有的對象到文件中。

+0

我認爲你的問題是因爲你在做sc.nextLine()兩次。第二個我認爲會在您按回車時創建的新行中讀取。所以你需要刪除上面的s = sc.nextLine()。 –

回答

3

Java序列化不支持「附加」。您無法將ObjectOutputStream寫入文件,然後再以附加模式打開文件,並向其寫入另一個ObjectOutputStream。你必須重新編寫整個文件每次。 (即,如果要將對象添加到文件中,則需要讀取所有現有對象,然後再次使用所有舊對象和新對象編寫該文件)。

相關問題