setOut: 改变输出流
public class App {
public static void main(String[] args) throws FileNotFoundException {
PrintStream console = System.out;
PrintStream logFile = new PrintStream("/home/jaemon/console.out");
System.out.println("start...");
// 切换输出到文件
System.setOut(logFile);
System.setErr(logFile);
for (int i = 1; i < 6; i++) {
System.out.println("key_" + i);
// 同时输出到控制台
console.println("key_" + i);
}
// 切换输出到控制台
System.setOut(console);
System.setErr(console);
System.out.println("end...");
}
}
控制台数据
start...
key_1
key_2
key_3
key_4
key_5
end...
console.out 文件内容
key_1
key_2
key_3
key_4
key_5
setIn: 改变输入流
public class App {
public static void main(String[] args) throws FileNotFoundException {
InputStream console = System.in;
InputStream logFile = new FileInputStream("/home/jaemon/console.out");
// 从文件中读取输入
System.setIn(logFile);
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextLine()) {
System.out.println(scanner.nextLine());
}
System.out.println("-----------------------");
// 从控制台读取输入
System.setIn(console);
scanner = new Scanner(System.in);
while (scanner.hasNextLine()) {
System.out.println(scanner.nextLine());
}
}
}
控制台输出
key_1
key_2
key_3
key_4
key_5
-----------------------
... // 控制台读取输入