Java 标准I/O

原创 2007年10月14日 23:26:00

按照标准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。

 

读书笔记-《细节决定成败》

读书笔记-《细节决定成败》 上海地铁二号线和一号线的差距上海地铁一号线是由德国人设计的,看上去并没有什么特别的地方,直到中国设计师设计的二号线投入运营,才发现其中有那么多的细节被二号线忽略了。结果二号...
  • panq
  • panq
  • 2004-04-13 14:03:00
  • 3714

java中讲讲PrintStream的用法,举例?

1.2 PrintStream的用法马克-to-win:从学java第一天,我们就经常用到System.out.println(),实际上查阅文档可知,System.out就是Sun编的一个Print...
  • mark_to_win
  • mark_to_win
  • 2017-05-01 15:02:22
  • 1960

java system.out.println() 详解(其中包,类,对象的关系) system.out 和 printstream类的关系浅谈

java.lang.system.out.printlb() java.lang 与 system.out.println()的关系 首先lang是一个包,system是类,Out是对象,...
  • evan_0097
  • evan_0097
  • 2016-10-04 11:07:20
  • 1544

PrintStream:

PrintStream: 是一个字节打印流,System.out对应的类型就是PrintStream。 它的构造函数函数可以接收三种数据类型的值。 1,字符串路径。 2,File对象。 3,...
  • shichunle
  • shichunle
  • 2011-09-06 21:57:04
  • 12368

【Java基础知识】IO流--标准输入输出流、打印流PrintStream

PrintStream
  • zhuwenchao90
  • zhuwenchao90
  • 2017-01-21 22:39:28
  • 667

两道2017华为校招Java面试题

面试题是实验室师兄面试提供的。两道题 题1:Java中System.out.print()如何理解? 查阅API文档,我们可以知道:System是Java中的一个类,而out是System类的成员 。...
  • zjkC050818
  • zjkC050818
  • 2017-08-26 16:45:57
  • 1718

JAVA学习之PrintStream类

1.类说明 System.out是标准输出,是PrintStream的实例,一般可以理解为向控制台输出内容。 2.方法说明 3.使用示例 import java.io.PrintS...
  • u013555159
  • u013555159
  • 2016-06-15 10:04:34
  • 671

PrintStream

之前所介绍过的Stream输出对象,都是直接将内存中的数据写出至目的地(例如一个档案),举个例子来说,如果您将 int 整数 1 使用之前介绍的Stream对象输出至档案,则档案中所储存的是 int ...
  • mywebstudy
  • mywebstudy
  • 2012-08-15 17:18:12
  • 2036

第22天 SequenceInputStream、合并切割、对象的输入输出流、Properties配置文件、.printStream、编码与解码、转换流、递归

SequenceInputStream、合并切割、对象的输入输出流、Properties配置文件、.printStream、编码与解码、转换流、递归...
  • nupotian
  • nupotian
  • 2016-12-25 12:47:19
  • 453

java io系列16之 PrintStream(打印输出流)详解

介绍了 PrintStream 的各个API 的意思,和分析了 PrintStream 和DataOutputStream的异同。...
  • guyuelin123
  • guyuelin123
  • 2016-10-07 20:43:47
  • 404
收藏助手
不良信息举报
您举报文章:Java 标准I/O
举报原因:
原因补充:

(最多只允许输入30个字)