2016-11-16 8 views
-2

これは私のコードの小さな部分です。ファイルがあればそれを読んでみたい。そうでない場合は、新しいものを作成します。私はプログラムを再起動すると、保存されているファイルを操作したい。 Eclipseはエラーが "ObjectInputStream inStream = new ObjectInputStream(file);"理由は分かりません。EOF例外とObjectInputStream.readObject()エラー

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

すべてのヘルプは、おかげで多くのことを理解されるであろう:私はこのようなオブジェクトを格納し、私のコードの最後に

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(); 
    } 

+0

質問は何ですか?ファイルは存在しますが、ファイルを読むときに例外が発生しますか? – SantiBailors

+0

yes @SantiBailors –

+0

あなたが得たエラーメッセージに言及することで、多分例外であればstacktraceを表示することもできます。それはコンパイルエラーを表示するEclipseですか、またはコードを実行すると例外がスローされますか?たぶんこれらのことは疑わしいかもしれませんが、ほとんどの人は気にしません。 – SantiBailors

答えて

0

ObjectInputStreamは、自動的にテキストをオブジェクトに変換することはできません。 readObjectは、writeObjectによって作成されたファイルに対してのみ、ObjectOutputStreamで動作します。

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()); 
    } 
}