这个线程可能是一个复制,但是有人能指点吗?我想同时将java程序输出写入控制台、和文件。我知道我可以用这段代码发送输出到控制台。
PrintStream orgStdout = null;
PrintStream fileStdout = null;
orgStdout = System.out;
try {
fileStdout = new PrintStream(new FileOutputStream("C:\\testlogger.txt"));
System.setOut(fileStdout);
System.out.println("==============");
for (int i = 0; i < 10; i++){
System.out.println("" + i);
}
System.out.println("==============");
} catch (FileNotFoundException e) {
e.printStackTrace();
}但是如何将输出保存在控制台和文件中呢??
不需要在文件中输出并在不同线程中显示控制台的选项。
发布于 2011-04-29 22:08:10
寻找TeeOutputStream从Apache Commons IO。
发布于 2011-04-29 22:08:48
不要调用System.setOut(),只需调用两个打印。这并不是很优雅,但您可以创建一个输出到两者的方法。
PrintStream orgStdout = null;
PrintStream fileStdout = null;
orgStdout = System.out;
try {
fileStdout = new PrintStream(new FileOutputStream("C:\\testlogger.txt"));
System.out.println("==============");
for (int i = 0; i < 10; i++){
System.out.println("" + i);
fileStdout.println("" + i);
}
System.out.println("==============");
fileStdout.println("" + i);
} catch (FileNotFoundException e) {
e.printStackTrace();
}如果在unix框上运行,只要所有内容都打印到stdout,也可以使用tee命令。你会像这样运行你的程序:
java MyClass | tee testlogger.txt然后,打印到stdout的所有内容都指向文件和控制台。
发布于 2017-01-31 08:23:48
当您运行程序时
java {标志到JVM} ClassName {参数到类}> output.txt 2> error.txt
https://stackoverflow.com/questions/5837838
复制相似问题