Java語言有很多的輸入和輸出方式,例如控制臺輸入輸出、文件輸入輸出等。在某些情況下,我們需要對程序的輸入和輸出進行重定向操作,也就是將程序原本該輸出到控制臺的內(nèi)容輸出到文件中,或者將程序原本該從控制臺獲取輸入的內(nèi)容從文件中讀取。Java語言提供了System類來實現(xiàn)重定向操作。
對于控制臺輸出重定向,Java提供了System.out和System.err兩個標(biāo)準(zhǔn)輸出流,分別代表標(biāo)準(zhǔn)輸出和錯誤輸出。我們可以通過調(diào)用System.setOut和System.setErr來實現(xiàn)輸出重定向:
PrintStream out = new PrintStream(new FileOutputStream("output.txt")); System.setOut(out); System.out.println("Hello, World!");
上述代碼將會把"Hello, World!"輸出到文件output.txt中。同理,我們可以通過System.setIn來實現(xiàn)對控制臺的輸入重定向:
System.setIn(new FileInputStream("input.txt")); Scanner scanner = new Scanner(System.in); String content = scanner.nextLine(); System.out.println(content);
上述代碼將讀取文件input.txt的內(nèi)容并輸出到控制臺中。
需要注意的是,如果我們多次重定向流,那么新的輸出流將會覆蓋舊的輸出流,而不是同時輸出到多個流中。而且在重定向過程中,程序可能會拋出IOException異常,需要進行處理。