0

コンソールの出力をテキスト ファイルで表示したいと考えています。

public static void main(String [ ] args){
    DataFilter df = new DataFilter();   
    df.displayCategorizedList();
    PrintStream out;
    try {
        out = new PrintStream(new FileOutputStream("C:\\test1.txt", true));
        System.setOut(out);
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

画面には正しく結果が表示されますが、テキストファイルにはなりませんか? テストファイルは生成されますが、空ですか??

4

2 に答える 2

5

システム出力ストリームをファイルに設定した後、「コンソール」に出力する必要があります。

    DataFilter df = new DataFilter();   
    PrintStream out;
    try {
        out = new PrintStream(new FileOutputStream("C:\\test1.txt", true));
        System.setOut(out);
        df.displayCategorizedList();
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } finally {
        if (out != null)
            out.close();
    }

また、finally ブロックを使用して常にストリームを閉じます。そうしないと、データがファイルにフラッシュされない可能性があります。

于 2013-04-05T07:26:37.670 に答える
0

次のアプローチをお勧めします。

public static void main(String [ ] args){
    DataFilter df = new DataFilter();   
    try (PrintStream out = new PrintStream(new FileOutputStream("d:\\file.txt", true))) {
          System.setOut(out);
          df.displayCategorizedList();
    } catch (FileNotFoundException e) {
        System.err.println(String.format("An error %s occurred!", e.getMessage()));
    }
}

これは、JDK 7 の try-with-resources 機能を使用しています。つまり、例外 (FileNotFoundException など) を処理し、(finally ブロックの代わりに) リソースも閉じます。

JDK 7 を使用できない場合は、他の回答で提案されているアプローチのいずれかを使用してください。

于 2013-04-05T07:34:23.453 に答える