您的位置:首页 > 编程语言 > Java开发

Java重定向标准输入输出流I/O(理解)

2013-05-13 23:08 423 查看
一、问题的引入:

一般情况下,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("=============读取输入流完毕============");

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: