java - java在文件和控制台中显示 stdout ( 使用 System.setOut(new PrintStream(new File("output file.txt") )

  显示原文与译文双语对照的内容
68 4

我想将stdout保存到文件中。 为了这个我使用了
System.setOut(new PrintStream(new File("output-file.txt")));

控制台中没有输出。


 try {


 System.setOut(new PrintStream(new File("output-file.txt")));


 } catch (Exception e) {


 e.printStackTrace();


 }



在控制台中是否有可能显示 stdout,尽管我使用stdout来填充文件?

时间:

91 5

可以使用两个写入的OutputStream 创建一个 PrintWriter


final OutputStream stdOut = System.out;


try {


 System.setOut(new PrintStream(new OutputStream() {


 private PrintStream ps = new PrintStream(new File("output-file.txt"));



 @Override


 public void write(int b) throws IOException {


 ps.write(b);


 stdOut.write(b);


 }



 @Override


 public void flush() throws IOException {


 super.flush();


 ps.flush();


 stdOut.flush();


 }



 @Override


 public void close() throws IOException {


 super.close();


 ps.close();


//stdOut.close();//Normally not done


 }


 }));


} catch (Exception e) {


 e.printStackTrace();


}



System.out.println("Hello, world!");



136 3

你不能使用系统的OutputStream 来写入 2个源。 它是一个 static 变量,而且它每次只能有个值。

可以尝试保存对控制台的默认 OutputStream,然后将系统 OutputStream 更改为自定义输出流并用自定义方法写入。

原作者:
...