2016-11-16 63 views
-2

这是我的一小部分代码。如果文件存在,我想读取它。如果不是,则创建一个新的。当我重新启动程序时,我想使用保存的文件。 Eclipse说错误在“ObjectInputStream inStream = new ObjectInputStream(file);”不知道为什么。EOF异常和ObjectInputStream.readObject()错误

rooms sbu = new rooms(); 
    File saveFile = new File("SavedObj.obj"); 
    if(saveFile.exists() == false) 
    { 
     System.out.println("No save file found. Creating a new file."); 
     try{ 
      saveFile.createNewFile(); 
     }catch(Exception ex) 
     { 
      System.out.println(ex.getMessage()); 
     } 
    } 
    else { 
     FileInputStream file = new FileInputStream(saveFile); 
     ObjectInputStream inStream = new ObjectInputStream(file); 
     sbu= (room) inStream.readObject(); 
    } 

在我的代码的最后,我存储对象是这样的:

FileOutputStream fileOut = new FileOutputStream(saveFile); 
ObjectOutputStream outStream = new ObjectOutputStream(fileOut); 
outStream.writeObject(sbu); 
outStream.close(); 
isFinished= true; 

任何帮助将不胜感激,非常感谢!

+0

那么问题是什么?该文件存在但您在阅读时遇到异常? – SantiBailors

+0

是@SantiBailors –

+0

你可以通过提到你得到的错误信息来帮忙,甚至可以显示堆栈跟踪,如果它是一个例外。是Eclipse是否显示编译错误,或者是运行代码时引发的异常,还是?也许这些事情可能会被人猜到,但大多数人不会在乎。 – SantiBailors

回答

0

您不能指望ObjectInputStream自动将文本转换为对象。 readObject只能用于由writeObjectObjectOutputStream创建的文件。

import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.ObjectInputStream; 
import java.io.ObjectOutputStream; 
import com.pechen.Person; 

public class Demo { 
    public static void main(String [] args) throws Exception{ 
     String filename = "person.obj";    
     Person person = new Person(); 
     ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(filename)); 
     out.writeObject(person); 
     out.close(); 

     Person p; 
     ObjectInputStream in = new ObjectInputStream(new FileInputStream(filename)); 
     p = (Person)in.readObject(); 
     in.close(); 
     System.out.println("Read Person: " + p.toString()); 
    } 
}