什么是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("=============讀取輸入流完畢============");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值