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);
        }
         
      }
}
View Code
使用异常规范是因为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");
    }
}
View Code
重要的是要使用有两个参数的PrintWriter的构造器,并将第二个参数设为true ,以便开启自
动清空功能;否则,你可能看不到输出。
 
 
3 标准1/0重定向
Java的System类提供了一些简单的静态方泣调用,以,允许我们对标准输入、输出和错误IO
流进行重定向:
setIn(InputStream)
setOut(PrintStream)
setErr(PrintStream)
package com.java.io;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;

public class Redirecting {
      public static void main(String[] args) throws IOException {
        PrintStream console = System.out;
        BufferedInputStream in = new BufferedInputStream(
                                        new FileInputStream("src/com/java/io/Redirecting.java"));
        PrintStream out = new PrintStream(
                              new BufferedOutputStream(
                                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(); 
        System.setOut(console);
      }
}
View Code
这个程序将标准输入附接到文件上,并将标准输出和标准错误重定向到另一个文件。注意,
它在程序开头处存储了对最初的System.out对象的引用,并且在结尾处将系统输出恢复到了该对
象上。
1/0重定向操纵的是字节流, 而不是字符流,因此我们使用的是InputStream和OutputStream,而不是Reader和Writer。
 
 
进程控制  

相关文章:

  • 2022-12-23
  • 2021-10-01
  • 2021-04-19
  • 2021-05-30
  • 2022-02-08
  • 2021-11-06
猜你喜欢
  • 2021-12-10
  • 2021-10-29
  • 2022-01-28
  • 2021-07-15
  • 2021-12-09
  • 2022-12-23
相关资源
相似解决方案