Java重定向標準輸入輸出流I/O(理解)

一、問題的引入:

        一般情況下,System.in代表的是鍵盤、System.out是代表的控制檯(顯示器)。當程序通過System.in來獲取輸入的時候,默認情況下,是從鍵盤讀取輸入;當程序試圖通過System.out執行輸出時,程序總是輸出到顯示器。如果我們想對這樣的情況做一個改變,例如獲取輸入時,不是來自鍵盤,而是來自文件或其他的位置;輸出的時候,不是輸出到顯示器上顯示,而是輸出到文件或其他位置,怎麼實現?於是,java重定標準輸入輸出應運而生。

二、java中提供了三個重定向方法:

    static void setErr(PrintStream err)、Static void setIn(InputStream in)、Static void setOut(PrintStream out)

三、示例

1、重定向標準輸出

package com.pb.io.reio;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
/**
 * 重定向標準輸出流
 * 1.初始化PrintStream對象
 * 2.調用System.setOut()方法,將標準輸出流重定向到PrintStraem對象
 * 3.操作System.out流
 */
public class ReOut {
 public static void main(String[] args) throws FileNotFoundException {
  //初始化一個PrintStream對象
  PrintStream ps = new PrintStream(new FileOutputStream("c:/myDoc/hello.txt"));
  //重定向標準輸出流,重定向到上面指定的文件
  System.setOut(ps);
  //使用PrintStream對象向流中寫信息
  System.out.print("測試一下,看重定向是否成功");
  System.out.println(new ReOut());
  //關閉流
  ps.close();
 }
}

2、重定向標準輸入流

package com.pb.io.reio;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
/**
 * 重定向標準輸入流
 * 1.有一個已經初始化的輸入流InputStream
 * 2.調用System.setIn()方法,將標準輸入流重定向到目的輸入流
 * 3.對System.in進行讀取操作
 * @author ghp
 *
 */

public class ReIn {
 public static void main(String[] args) throws IOException {
  //實例化FileinputStream對象
  FileInputStream fis = new FileInputStream("c:/myDoc/hello.txt");
  //重定向標準輸入流
  System.setIn(fis);
  //讀取System.in標準輸入流中的內容
  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        //輸出System.in中的內容
  String line = null;
  System.out.println("==============開始讀取標準輸入流=============");
  while((line = br.readLine()) !=null){
   System.out.println(line);
  }
  //關閉流
  br.close();
  fis.close();
  System.out.println("=============讀取輸入流完畢============");
 }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章