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 回答