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"));

也许这条线是一条线,但有人能指引吗?我想同时将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();
    }
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