将System.out和System.err重定向

将System.out和System.err重定向

昨天去面试,被问到System.out和System.err如何被重定向,脑海中隐约有点印象,好像在哪里看到过似的,但是死活想不起来,面试的考官提示在Tomcat的源码中可以找到答案,尽早起来连忙下载Tomcat源码,终于在AprImpl.java文件中找到了些许蛛丝马迹,此文件中有这样一个方法:

public static void setOut( String filename ) {
        try{
            if( filename !=null ){
               System.setOut( new PrintStream(new FileOutputStream(filename )));
            }
        }catch (Throwable th){
        }
}

JDK还提供了对System.err重定向的方法,System.setErr(PrintStream stream);

不料原来重定向如此简单,JDK已经提供了对应的方法,只愿自己对JDK API不是非常熟悉,以后对Java的研究还要再下些功夫才行。