在Java中操作标准输入输出设备,可以像普通文件那样进行流的输入与输出。基于这样一个原理,就可以实现文件流与标准流之间的重定向。
1、文件输入流重定向到标准输入流。
文件输入流重定向到标准输入流可以将文件中的数据输入到标准输入设备中。看下面的例子:
public class JavaRedirect {
public static void main(String[] args) throws FileNotFoundException {
File file = new File("F:\\in.txt");//输入文件
InputStream in = new BufferedInputStream(new FileInputStream(file));//输入流
System.setIn(in); //设置文件输入流到标准输入流
Scanner scan = new Scanner(System.in);
String next = scan.next();//获取标准输入流中的一个字符串
System.out.println(next);
scan.close();
}
这段代码的好处就是,我们不需要通过键盘手动输入数据,程序在运行时不会发生IO阻塞的情况。
文件输入流重定向到标准输入流的应用:
假如有一个测试程序,测试数据非常多,通过手动从键盘输入根本就不现实,那么就可以采用文件输入流重定向到标准输入流的方式将文件中测试数据一次性重定向到标准输入流供程序读取。达到了一种自动完成测试的目的。
2、标准输出流重定向到文件流。
可以将程序运行的结果,输入到文件中。看下面的例子:
public class JavaRedirect {
public static void main(String[] args) throws FileNotFoundException {
PrintStream out = new PrintStream(new File("F:\\out.txt"));
out.print("fsdfds");
System.setOut(out);
}将字符串fsdfds从标准输出流从定向到文件F:\\out.txt。
应用:
当我们非常关心程序的输出结果时,并且输出结果数据非常大,为了便于我们观察分析,就可以使用标准输出流重定向到文件流将数据输出到文件中。