【发布时间】:2015-12-13 09:55:13
【问题描述】:
我浏览了java API文档。我摆弄了一些函数和类,发现有些奇怪。我编写的以下代码没有将标准输出流设置为默认值(System.out)。 起初,我将标准输出目标设置为一个文件,然后我尝试重置它,但它继续写入文件。
try
{
file=new FileOutputStream("mamamia.txt",true);
//j=new BufferedOutputStream(file);
j=new PrintStream (file);
//byte[] b={49,50,44,67,44,23,57,32};
//j.write(b,0,5);
System.setOut(j);
System.out.println("hey mama mia");
System.out.println("hello gigs");
PrintStream j1=new PrintStream (System.out);
System.setOut(j1);
System.out.println("Hey bro");
j.flush();
file.flush();
file.close();
j.close();
}
'Hey bro' 正在打印到文件中。为什么它不会恢复默认值? Prinstream 构造函数查找类型 OutputStream。由于 PrintStream 是 OutputStream 的间接子类,我直接传递了 System.out。它没有显示任何错误,唯一的问题是它不会回到默认值。 有人可以帮忙吗?
【问题讨论】:
-
PrintStream j1=new PrintStream (System.out);你之前已经将 System.out 设置为 PrintStreamj所以它不会得到默认的 -
@Yazan 我将它设置回 j1,它指向默认值 - (System.out)。为什么我无法更改它?
-
重点是,您已将 System.out 从默认值更改为
j,所以现在当您调用 System.out 时,它将是j而不是默认值。 -
好的。非常感谢。 @亚赞
标签: java