将java中控制台的输出写入文本文件

时间:2013-04-05 07:24:17

标签: java

我想在文本文件中显示我的控制台输出。

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

}

我在屏幕上正确得到了我的结果,但没有得到文本文件? 测试文件是否已生成,但它是空的?

2 个答案:

答案 0 :(得分:5)

将系统输出流设置为文件后,应打印到“console”。

    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块来始终关闭流,否则数据可能无法刷新到文件中。

答案 1 :(得分: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,请使用其他响应中建议的方法之一。