黑马程序员技术交流社区

标题: 改变标准输入输出的一点疑问? [打印本页]

作者: 悟佛修道    时间: 2013-5-29 23:45
标题: 改变标准输入输出的一点疑问?
本帖最后由 悟佛修道 于 2013-6-4 23:06 编辑
  1. class TransStreamDemo2
  2. {
  3. public static void main(String[] args) throws IOException
  4. {
  5. System.setIn(new FileInputStream("PersonDemo.java"));

  6. System.setOut(new PrintStream("zzz.txt"));        当这行写出来后 下面的system.out还会不会执行???如果不会执行相当于就废了?
  7. //键盘的最常见写法。
  8. BufferedReader bufr =
  9. new BufferedReader(new InputStreamReader(System.in));


  10. BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));

  11. String line = null;

  12. while((line=bufr.readLine())!=null)
  13. {
  14. if("over".equals(line))
  15. break;
  16. bufw.write(line.toUpperCase());
  17. bufw.newLine();
  18. bufw.flush();
  19. }

  20. bufr.close();

  21. }
  22. }
复制代码
System.setOut(new PrintStream("zzz.txt"));
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
这两句有联系没啊?是不是其中只能存在一句?


作者: 刘勇强    时间: 2013-5-30 00:00
本帖最后由 刘勇强 于 2013-5-30 00:06 编辑

System.setOut(new PrintStream("zzz.txt")); 是把标准输出重新定义,之前System.out是指显示器,现在你再调用System.out,就是输出写到zzz.txt这个文件里了


我刚才试了一下,已经把PersonDemo.java里的信息 读到了zzz.txt里

你把System.setOut(new PrintStream("zzz.txt"));   这句注释掉,也就是标注输出out没有修改,程序会把PersonDemo.java内的内容读到控制台  你可以试一下.
作者: First    时间: 2013-5-30 00:01
本帖最后由 First 于 2013-5-30 00:03 编辑

这两句话加一起就是:
输出到 “zzz.txt"

如果没有第一句话,输出流就是控制台,
如果没有第二句话,就等于没有指明输出流




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2