1 从标准输入中读取
按照标准1/0模型, Java提供了System.in、System.out和System.err。在整本书里,我们已经
看到了怎样用System.out将数据写出到标准输出,其中System.out 已经事先被包装成了
printStream对象。System.err 同样也是PrintStream ,但System.in却是一个没有被包装过的未经
加工的InputStream。这意味尽管我们可以立即使用System.out和System.err ,但是在读取
System.in之前必须对其进行包装。
通常我们会用readLine一次一行地读取输入,为此,我们将System.in包装成BufferedReader
来使用这要求我们必须用InputStreamReader把System.in转换成Reader。下面这个例子
将直接回显你所输入的每一行。
package com.java.io; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Echo { public static void main(String[] args) throws IOException { BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in)); String s; while((s = stdin.readLine()) != null && s.length()!= 0){ System.out.println(s); } } }
使用异常规范是因为readLineO会抛出IOException。注意System.in和大多数流一样,通
常应该对它进行缓冲。
2 将System.out转换成PrintWriter
System.out 是一个PrintStream ,而PrintStream是一个OutputStream . PrintWriter有一个
可以接受OutputStream作为参数的构造器。因此,只要需要,就可以使用那个构造器把
System.out 转换成PrintWriter:
package com.java.io; import java.io.PrintWriter; public class ChangeSystemOut { public static void main(String[] args) { PrintWriter out = new PrintWriter(System.out,true); out.println("Hello, world"); } }
重要的是要使用有两个参数的PrintWriter的构造器,并将第二个参数设为true ,以便开启自
动清空功能;否则,你可能看不到输出。
------------------
时间: 2024-10-16 12:35:00