程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java重定向標准IO

java重定向標准IO

編輯:關於JAVA

Java 1.1在System類中添加了特殊的方法,允許我們重新定向標准輸入、輸出以及錯誤IO流。此時要用到下述簡單的靜態方法調用:
setIn(InputStream)
setOut(PrintStream)
setErr(PrintStream)
如果突然要在屏幕上生成大量輸出,而且滾動的速度快於人們的閱讀速度,輸出的重定向就顯得特別有用。在一個命令行程序中,如果想重復測試一個特定的用戶輸入序列,輸入的重定向也顯得特別有價值。下面這個簡單的例子展示了這些方法的使用:
 

//: Redirecting.java
// Demonstrates the use of redirection for 
// standard IO in Java 1.1
import java.io.*;

class Redirecting {
  public static void main(String[] args) {
    try {
      BufferedInputStream in = 
        new BufferedInputStream(
          new FileInputStream(
            "Redirecting.java"));
      // Produces deprecation message:
      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(); // Remember this!
    } catch(IOException e) {
      e.printStackTrace();
    }
  }
} ///:~


這個程序的作用是將標准輸入同一個文件連接起來,並將標准輸出和錯誤重定向至另一個文件。
這是不可避免會遇到“反對”消息的另一個例子。用-deprecation標志編譯時得到的消息如下:

Note:The constructor java.io.PrintStream(java.io.OutputStream) has been deprecated.
注意:不推薦使用構建器java.io.PrintStream(java.io.OutputStream)。

然而,無論System.setOut()還是System.setErr()都要求用一個PrintStream作為參數使用,所以必須調用PrintStream構建器。所以大家可能會覺得奇怪,既然Java 1.1通過反對構建器而反對了整個PrintStream,為什麼庫的設計人員在添加這個反對的同時,依然為System添加了新方法,且指明要求用PrintStream,而不是用PrintWriter呢?畢竟,後者是一個嶄新和首選的替換措施呀?這真令人費解。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved