2016-11-16 7 views
-2

Это небольшая часть моего кода. Я хочу прочитать файл, если он существует. Если нет, то создайте новый. Когда я перезапускаю программу, я хочу работать с сохраненным файлом. Eclipse говорит, что ошибка указана в «ObjectInputStream inStream = new ObjectInputStream (файл)»; Не знаю, почему.Исключение 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

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()); 
    } 
} 
Смежные вопросы