Java:第一个setErr之后的System.setErr不写入文件

时间:2018-09-09 05:57:45

标签: java io stream

我有一个使用System.setErr()的服务器程序用作日志记录。我在关闭最后一个PrintStream并打开一个新的写入对象时遇到问题。

这是它的初始化方式:

File file = new File("file" + "_.txt");
for (int i = 1; file.exists(); i++) {
    file = new File(String.format("file" + "_%d.txt", i));
}

System.setErr(new PrintStream(new BufferedOutputStream(new FileOutputStream(file)), true));

这是重新启动的方式:

System.err.flush();
System.err.close();
File file = new File("file" + "_.txt");
for (int i = 1; file.exists(); i++) {
    file = new File(String.format("file" + "_%d.txt", i));
}

System.setErr(new PrintStream(new BufferedOutputStream(new FileOutputStream(file)), true));

问题在于,发送到System.err的新PrintStream的任何内容都不会打印。仅打印其中的一部分,但大部分(在多个线程中)不打印。

希望得到一些帮助, 谢谢!

0 个答案:

没有答案