次のメソッドは、追加した最新のアイテムのみを書き出します。以前のエントリには追加されません。私は間違って何をしていますか?PrintWriter appendメソッドが追加されない
public void addNew() {
try {
PrintWriter pw = new PrintWriter(new File("persons.txt"));
int id = Integer.parseInt(jTextField.getText());
String name = jTextField1.getText();
String surname = jTextField2.getText();
Person p = new Person(id,name,surname);
pw.append(p.toString());
pw.append("sdf");
pw.close();
} catch (FileNotFoundException e) {...}
}
これは、睡眠のスレッド、そのためにとても残念を目覚めさせるようなものです。しかし、私は疑いがあります。 Fileオブジェクトだけを与えられ、Streamクラス(FileOutputStreamなど)を使用することが許可されていない場合、ファイル内で操作を追加するにはどうすればよいですか。私は許可されている:Printwriter pw =新しいPrintWriter(ファイル);私はappend()、write()、print()を試しました。このシナリオで追加するためのレディメイドメソッドがありますか? –
説明として、PrintWriterの 'append()'メソッドは、それがWriter、すなわちそれ自体に追加されているという事実を参照しています。それは自分の出力ストリームであり、ファイルではありません。 –
そして、@ user1707035の質問を参照すると、PrintStreamを使用してOutputStreamオブジェクトで構築することなく追加することはできないようです。これはPrintWriterがインスタンス化時にストリームを開き、引数としてFileまたはfilenameをサポートするコンストラクタだけが、 'append'パラメータなしでOutputStreamオブジェクトを内部的に構築することによってFileを開くためです。リファレンス(docs):https://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html#PrintWriter(java.io.File) –