System.out和System.err都有固定的输出目标,而System.in也固定的输入源,但是System类中还提供了三个方法,来重写定向输入和输出的位置。
public static void setErr(PrintStream err)
public static void setIn(InputStream in)
public static void setout(PrintStream out)
package obc17;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
public class OopDemo12 {
public static void main(String[] args) throws IOException {
File file = new File("E:\\Maori\\IODemo.txt");
PrintStream ps = new PrintStream(file);
System.setOut(ps);
System.out.println("sdfsadfsdfsdf");
}
}
输出重定向的意义就在于可以将系统的日志保存到文件中,以便日后维护。
错误的重定向:
package obc17;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
public class OopDemo12 {
public static void main(String[] args) throws IOException {
File file = new File("E:\\Maori\\IODemo.txt");
PrintStream ps = new PrintStream(file);
System.setErr(ps);
System.err.println("1331232");
}
}
输入的重定向:
package obc17;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class OopDemo13 {
public static void main(String[] args) throws IOException {
File file = new File("E:\\Maori\\IODemo.txt");
InputStream in = new FileInputStream(file);
System.setIn(in);
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
String s= buf.readLine();
System.out.println(s);
}
}
正常情况下,我们不会修改输入源。