1. 程式人生 > >Java中標準輸入輸出流的重定向

Java中標準輸入輸出流的重定向

一、問題的引入:

一般情況下,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("=============讀取輸入流完畢============");
}

}