私はファイルから一連のパラメータを読み込む必要がある小さなプログラムを作成しています.3つのクラス(3つのクラスすべてを継承同じ親クラス)。各操作の後に方法は、方法の1 出力1方法の1 出力3 1等複数のクラスで同じプリントライターを使用する方法(Java)
方法の2 出力2の方法のこの
出力1と同様に、出力ファイル内の行を印刷するようになっています3つのクラスのすべてのメソッドが同じファイルに出力されるべきであるという考え方は重要ではありません。
ブロック
if/method {
.... do something
text ="output of something";
try(PrintWriter out = new PrintWriter("outputfile.txt") ){
out.println(text);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}//end if/method
場合、私は/各メソッドの最後にこのコードを使用しているコードは確かしかし、それは常に前の行を上書きし、ファイルに何かを書くありません。したがって、たとえば、12行の「何か」の代わりに、私には1だけしかありません。
どうすればこの問題を解決できますか?私は毎回新しいPrintWriterを作成し、それを別の場所に宣言して各クラスに呼び出すことを考えていたからだと思う。それは働くだろうか?どのように私はそれを各クラスに呼び出すことになるでしょうか?
これは私の初めてのファイル操作です。ありがとうございました。
はい、問題はあなたがすべての3つのクラスに新しいPrintWriterを作成することです。これを行う代わりに、パラメータとして渡す必要があります。たとえば、PrintWriterをパラメータとして受け入れるように処理メソッドをコーディングしてから、メインメソッドで単一のPrintWriterインスタンスを作成し、tryメソッドブロック内に3つのメソッド呼び出しを配置します。 –
@BalázsNemesの場合、書き込み操作が同時ではなく、時間外に切り離された場合(つまり、各クラスは他の3つのクラスが何を行っているかにかかわらず書き込み可能です)、各クラスごとに独自のプリントライターを作成することは実際にはうまくいきます。 –
@ M.Prokhorovさて、どうすれば上書きを避けることができますか? –