Java 标准I/O

按照标准I/O模型,Java 提供了 System.in、System.out 和 System.err。
其中 System.out 已经事先被包装成了 PrintStream 对象。 System.err 同样
也是 PrintStream,但 System.in 却是一个没有被包装过的未经加工的 InputStream。
这意味着尽管我们可以立即使用 System.out 和 System.err,但是在读取 System.in
之前必须对其进行包装。
(1)从标准输入读取
 BufferedReader in = new BufferedReader(
  new InputStreamReader(System.in) );
 String s;
 while( ( ( s = in.readLine() ) != null ) && ( s.length() != 0 ) ) {
  System.out.println(s);
 }
 
(2)将 System.out 转换成 PrintWriter
System.out 是一个 PrintStream, 而 PrintStream 是一个 OutputStream。 PrintWriter
有一个可以接受 OutputStream 作为参数的构造器。因此,只要需要,就可以使用那个构造器把
System.out 转换成 PrintWriter:
 PrintWriter out = new PrintWriter( System.out, true );
 out.println("Hello, world");
 
重要的是使用有两个参数的 PrintWriter 的构造器,并将第二个参数设为 true, 以便开启自动清空
功能;否则,你可能看不到输出。

(3)标准I/O重定向
Java 的 System 类提供了一些简单的静态方法调用,以允许我们对标准输入、输出和错误I/O流进行重定向:
setIn(InputStream)
setOut(OutputStream)
setErr(OutputStream)
 
 PrintStream console = System.out;
 BufferedInputStream in = new BufferedInputStream(
  new FileInputStream("Redirecting.java") );
 PrintStream out = new PrintStream(
  new FileOutputStream("test.out") );
 System.setIn(in);
 System.setOut(out);
 System.setErr(out);
 BufferedReader br = new BufferedReader(
  new InputStreamReader(System.in) );
 String s;
 while( ( s = br.readLine() ) != null ) {
  System.out.println(s);
 }
 out.close(); // Remember this!
 System.setOut(console);
I/O重定向操纵的是字节流,而不是字符流;因此我们使用的是 InputStream 和
OutputStream,而不是 Reader 和 Writer。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值