import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
public class Redirecting {
public static void main(String[] args) throws IOException{
1. PrintStream console = System.out;
2. BufferedInputStream in = new BufferedInputStream(
new FileInputStream("C://BufferedInputFile.java"));
3. PrintStream out = new PrintStream(
new BufferedOutputStream(
new FileOutputStream("C://test.out")));
4. System.setIn(in);
5. System.setOut(out);
6. System.setErr(out);
7. BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));
String s;
while ( (s = br.readLine()) != null) {
8. System.out.println(s);
}
9. out.close();
10. System.setOut(console);
}
}
我们都知道,Java对于System.in、System.out默认输入输出是键盘和显示器,不是文件。但是通过重定向,我们以后就可以直接读写文件。下面我以上面的实例对Java I/O重定向进行讲解。
第一行的代码,将当前的输出流存放在Console中,Java默认的输出是在屏幕上。
第二行的代码,接通C盘下文件的输入流管道——in
第三行的代码,接通C盘下test.out文件的输出流管道——out
第四行的代码,将in设置为标准输入流(将输入流附接到文件上)
第五行的代码,将out设置为标准输出流(将输出流附接到文件上)
第六行的代码,将out设置为标准错误输出流(将标准错误输出流附接到文件上)
第七行的代码,将当前的输入流与br接通
第八行的代码,将输入流的信息一行一行打印到当前的标准输出流中
第九行的代码,关闭当前输出流
第十行的代码,将输出流设置为默认位置(屏幕)