Java控制台输出-文件和控制台
也许这条线是一条线,但有人能指引吗?我想同时将java程序输出写入控制台和文件。我知道我可以用这段代码将输出发送到控制台Java控制台输出-文件和控制台,java,core,outputstream,Java,Core,Outputstream,也许这条线是一条线,但有人能指引吗?我想同时将java程序输出写入控制台和文件。我知道我可以用这段代码将输出发送到控制台 PrintStream orgStdout = null; PrintStream fileStdout = null; orgStdout = System.out; try { fileStdout = new PrintStream(new FileOutputStream("C:\\testlogger.txt"));
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();
}
PrintStream orgStdout=null;
PrintStream filestout=null;
orgStdout=系统输出;
试一试{
filestout=newprintstream(newfileoutputstream(“C:\\testlogger.txt”);
系统放样(文件放样);
System.out.println(“=========================”);
对于(int i=0;i<10;i++){
系统输出打印项次(“+i”);
}
System.out.println(“=========================”);
}catch(filenotfounde异常){
e、 printStackTrace();
}
但是如何在控制台和文件上保持输出呢
附言:
不寻找我在文件中输出并在不同线程中在控制台中显示它的选项 从中查找
TeeOutputStream
。不要调用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();
}
然后,打印到stdout的所有内容都将同时发送到文件和控制台。当您运行程序时
java{flags to the JVM}ClassName{parameters to your class}>output.txt 2>error.txt应该检查该页面上没有
TeeOutputStream
。使用Apache Commons IO JavaDoc链接修复。
java MyClass | tee testlogger.txt