重定向标准输入/输出一共有三个方法
setErr 重定向“标准”错误输出流
setIn 重定向“标准”输入流
setOut 重定向"标准"输出流
下面使用重定向输出流把System.out输出重定向为向文件输出,而不是在屏幕上输出
import java.io.*;
public class RedirectOut
{
public static void main(String[] args)
{
PrintStream ps = null;
try
{
//一次创建PrintStream输出流
ps = new PrintStream(new FileOutputStream("out.txt"));
//将标准输出重定向到ps输出流
System.setOut(ps);
//向标准输出一个字符串
System.out.println("普通字符串");
//向标准输出输出一个对象
System.out.println(new RedirectOut());
}
catch (IOException ex)
{
ex.printStackTrace();
}
finally
{
if(ps != null)
{
ps.close();
}
}
}
}
下面的System.in输入被重定向,本来是使用键盘输入为标准输入,而使用重定向后,则是使用RedirectIn.java文件作为标准输入源
import java.io.*;
import java.util.Scanner;
public class RedirectIn
{
public static void main(String[] args)
{
FileInputStream fis = null;
try
{
//一次创建PrintStream输出流
fis = new FileInputStream("RedirectIn.java");
//将标准输出重定向到pis输入流
System.setIn(fis);
//使用System.in创建Scanner对象,用于获取标准输入
Scanner sc = new Scanner(System.in);
//增加下面一行将只把回车作为分隔符
sc.useDelimiter("\n");
//判断是否还有下一个输入项
while(sc.hasNext())
{
//输出输入项
System.out.println("键盘输入的内容是:" + sc.next());
}
}
catch (IOException ex)
{
ex.printStackTrace();
}
finally
{
if(fis != null)
{
try
{
fis.close();
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
}
}
}