0

テキストファイルに書き込みたい。次に、コンソールへの印刷を続けたいと思います。

テキストファイルに正常に出力できました。ただし、テキスト ファイルに書き込むために作成された PrintStream を閉じた後、コンソールに出力できません。たとえば、次のコードでは、テキスト ファイルに「permutation」というメソッドからの出力があり、その後に「Test before close」という語句が続きます。ただし、「Test after close」というフレーズは、テキスト ファイルにもコンソールにも出力されません。アドバイスありがとうございます!!

public static void main(String[] args) throws FileNotFoundException {
    PrintStream out2 = new PrintStream(new FileOutputStream("output.txt"));
    System.setOut(out2);
    permutation("1234");
    System.out.println("Test before close");
    out2.close();
    System.out.println("Test after close");
}
4

2 に答える 2

0

ファイルに書き込むために system.setOut を使用する必要はありません。「System.out」をオーバーライドし、リセットしていません。本当にやりたい場合は、次を追加する必要があります。

saveOut=System.out

setOut の前、そして最後の行の前に次を追加します。

System.setOut(saveOut)

元の system.out を元に戻します。

必要に応じてストリームをリダイレクトします。ただし、ストリームを横断しないでください。

于 2013-04-14T06:19:13.950 に答える
0

System.out(デフォルトでは、コンソール) の前のどこかに変数に格納しますsetOut

oldOut = System.out;

次に、 の後 (または前)out2.close();に以下を追加します。

System.setOut(oldOut);

これにより、古い標準出力が復元され、コンソールに再び出力できるようになります。

(コードが実際に行っていたのは、 System.outset をout2に残しているため、現在は閉じられているため、すべての出力がブラック ホールに入ります。)

于 2013-04-14T06:21:08.800 に答える