从java中将控制台输出写入文本文件
问题描述:
我想在文本文件中显示我的控制台输出。从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();
}
}
我在屏幕上正确显示了我的结果,但没有导致文本文件? 测试文件生成但它是空的?
答
将系统输出流设置为文件后,应打印到“控制台”。
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块来关闭流,否则数据可能不会被刷新到文件。
+0
您将o/p流设置为文件,然后保存在c文件夹中 – 2013-04-05 07:28:34
答
我建议以下方法:
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-与资源的功能 - 这意味着它有例外(如FileNotFoundException异常)的交易,你必须与它也关闭资源(而不是finally块)。
如果您不能使用JDK 7,请使用其他响应中建议的方法之一。
does'df.displayCategorizedList();'print to stdout?那么你应该把它放在'System.setOut()'后面呢' – 2013-04-05 07:26:31
我是java新手,你能不能给我更多提示请 – 2013-04-05 07:26:42
这个话题似乎已经被相当彻底地处理了[在这里](http:// *。 COM /问题/ 1994255 /如何到写控制台输出到一个-TXT文件)。 – 2013-04-05 07:27:32