读书人

System.setOut(ps)重定义了输出流后,怎

发布时间: 2011-12-31 23:50:30 作者: rapoo

System.setOut(ps)重定义了输出流后,如何重定向控制台输出?
System.setOut(ps)重定义了输出流后,如何重定向控制台输出?

System.setOut(ps)这一设置的作用域是在哪到哪?

用完后,如何设置回标准输出?

import java.io.*;

public class TestSetout {
public static void main(String args[]) {
System.out.println( "ok "); //这一句可以打印到控制台
print();
System.out.println( "ok "); //以下5句就不知道哪去了.也没有打印到文件.
System.out.println( "ok ");
System.out.println( "ok ");
System.out.println( "ok ");
System.out.println( "ok ");
}
static void print(){
FileOutputStream out = null;
try{
out = new FileOutputStream( "c:/java/kk.txt ");
}catch(FileNotFoundException e) {

}
PrintStream ps = new PrintStream(out);
System.setOut(ps);
System.out.println( "lasjflsdjflsdjfisjdfjsdfjsdoifj ");
System.out.println( "lasjflsdjflsdjfisjdfjsdfjsdoifj ");
System.out.println( "lasjflsdjflsdjfisjdfjsdfjsdoifj ");
System.out.println( "lasjflsdjflsdjfisjdfjsdfjsdoifj ");

try{
ps.close();
out.close();
}catch(IOException e){}
}
}

[解决办法]
我个人觉得回答你这个问题要是自己想还是要花一点点时间的

看过源码之后发现
可以用
System.setOut(new PrintStream(new FileOutputStream(FileDescriptor.out)));
重新定位到标准输出流

setOut实际上执行了
public static void setOut(PrintStream out) {
checkIO();
setOut0(out);
}
而setOut0(out)是本地方法
我猜想他的功能之一就是System.out = 上面的out

ps:记得以后多放一点分,这样回答的人就多了:)

读书人网 >J2SE开发

热点推荐