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

そして、追加できる人には2つのタイプがあるため、これを2回行います

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

だから私の質問は、入力を機能させるにはどうすればよいですか、そして最後にどこに置くのですか、 add メソッドまたは main メソッドで、ここで行ったことを行う方法を読みます: http://www.mkyong.com/java/オブジェクトからファイルへの書き込み方法 in 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 と組み合わせることができます。また、再利用できるように、読み取り/書き込みコードを 1 か所に配置する必要があると思います。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 に答える