-1

我正在尝试将对象放入文档中。dat 然后它们可以被读取 有谁知道哪里出错了?我遇到的问题是它能够读取您保留的文件,我不确定您是否保存它,但是如果我在文件夹中找到该文件...

我正在使用以下对象:

public class Person {
    public int Id;
    public String Name;
    public boolean Show;

    public Persona(
            int identificator,
            String newName,
            boolean ShoworNot
            ){
        this.Id = identificator;
        this.Name = newName;
        this.Show = ShoworNot;
    }

Thanks
my code:

public void WriteFile
try {
            FileOutputStream file = new FileOutputStream("try.dat");
            ObjectOutputStream exit = new ObjectOutputStream(file);
            Iterator ite2 = people.iterator();
            while(ite2.hasNext()){
            Person person2 = (Person)ite2.next();
            exit.writeObject(person2);
            exit.close();
        }
            System.out.println("It's works");

        }
        catch (IOException e){
        System.out.println("Problems with the file.");
        }
}
  }
  }
  }
  public void ReadFile(){
      try {
FileInputStream file2 = new FileInputStream("try.dat");
ObjectInputStream entry = new ObjectInputStream(file2);
entry.readObject();
String data = (String)entry.readObject();
        entry.close();
System.out.println(data);
}

catch (FileNotFoundException e) {
System.out.println("It can't open the file document");
}
catch (IOException e) {
System.out.println("Problems with the file");
}
catch (Exception e) {
System.out.println("Error reading the file");
}
}
4

1 回答 1

0

Serializable如果你想使用你的对象必须实现接口ObjectOutputStream。只需更改public class Person {public class Person implements Serializable {

还要看看是什么问题,在每个blockcatch{}里面写e.printStackTrace()

你有一个错误:

entry.readObject();
String data = (String)entry.readObject();

您正在读取 1 个对象,忽略它并尝试读取第二个对象,但您已经读取了它,所以您在文件末尾并且您得到 EndOfFileException(EOF)。删除第一行。第二个问题是对象的类型无效。你写一个对象Person,所以你必须阅读Person,而不是String

Person data = (Person) entry.readObject();

同样,在您发送文件中的所有数据之后,在关闭流之前,您必须调用.flush()

exit.writeObject(person2);
exit.flush();
exit.close();
于 2012-05-29T11:03:02.007 回答