我想在文本文件中显示我的控制台输出。
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();
}
}
我在屏幕上正确得到了我的结果,但没有得到文本文件? 测试文件是否已生成,但它是空的?
答案 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,请使用其他响应中建议的方法之一。