0

我是提交 i/o 的新手,所以如果这是一个非常糟糕的问题,我很抱歉。

目前我有一个 add 方法/main 方法和一个 person 类,我的输出流在 add 方法中工作正常:这是方法的顶部

       FileOutputStream myFile = null;
        try {
            myFile = new FileOutputStream("txt123.txt");
        } catch (FileNotFoundException e2) {
            // TODO Auto-generated catch block
            e2.printStackTrace();
        }
        ObjectOutputStream oos = null;
        try {
            oos = new ObjectOutputStream(myFile);
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

然后我有两次,因为可以添加两种类型的人

oos.writeObject(person);
oos.close();
System.out.println("Done");

所以我的问题,我如何让输入工作,最后我把它放在哪里,在 add 方法或 main 方法中,我阅读了如何做我在这里所做的事情:http ://www.mkyong.com/java/如何在 java 中编写一个对象到文件/

他也有阅读对象的指南,但我似乎无法让它工作

  • 谢谢!
4

2 回答 2

0

您将像这样读取刚刚创建的文件:

ObjectInputStream in = 
  new ObjectInputStream(new FileInputStream("txt123.txt"));
  // terrible file name, because this is binary data, not text

try{

   Person person = (Person) in.readObject();

finally{
   in.close();
}
于 2012-11-02T03:07:40.500 回答
0

您可以将 ObjectOutputStream 与 FileOutputStream 组合如下。我还猜测您需要将读/写代码放在一个地方以允许重用。这是一个在 DAO 中读/写的简单示例。

 public static class Person implements Serializable {
    private String name;
    public Person(String name) {
        super();
        this.name = name;
    }
    public String getName() {
        return name;
    }
    @Override
    public String toString() {
        return name;
    }
}

public static class PersonDao {
    public void write(Person person, File file) throws IOException {
        ObjectOutputStream oos = new ObjectOutputStream(
                new FileOutputStream(file));
        oos.writeObject(person);
        oos.close();
    }

    public Person read(File file) throws IOException,
            ClassNotFoundException {
        ObjectInputStream oos = new ObjectInputStream(new FileInputStream(
                file));
        Person returnValue = (Person) oos.readObject();
        oos.close();
        return returnValue;
    }
}

public static void main(String[] args) throws IOException,
        ClassNotFoundException {
    PersonDao personDao = new PersonDao();
    Person alice = new Person("alice");
    personDao.write(alice, new File("alice.bin"));
    Person bob = new Person("bob");
    personDao.write(bob, new File("bob.bin"));

    System.out.println(personDao.read(new File("alice.bin")));
    System.out.println(personDao.read(new File("bob.bin")));
}
于 2012-11-02T03:11:06.107 回答