重定向標準輸入輸出
Java的輸入輸入分別通過System.in和System.out來完成,默認情況下他們分別代表鍵盤和顯示器,在System類裏還提供瞭如下3個重定向標準輸入/輸出的方法:
- static void setErr(PrintStream err):重定向標準錯誤輸出流
- static void setIn(InputStream in):重定向標準輸入流
- static void setOut(PrintStream out):重定向標準輸入流
import java.io.*;
public class RedirectOut
{
public static void main(String[] args)
{
try (
// 一次性創建PrintStream輸出流
var ps = new PrintStream(new FileOutputStream("out.txt")))
{
// 將標準輸出重定向到ps輸出流
System.setOut(ps);
// 向標準輸出輸出一個字符串
System.out.println("普通字符串");
// 向標準輸出輸出一個對象
System.out.println(new RedirectOut());
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
}
import java.util.*;
import java.io.*;
public class RedirectIn
{
public static void main(String[] args)
{
try (
var fis = new FileInputStream("RedirectIn.java"))
{
// 將標準輸入重定向到fis輸入流
System.setIn(fis);
// 使用System.in創建Scanner對象,用於獲取標準輸入
var sc = new Scanner(System.in);
// 增加下面一行將只把回車作爲分隔符
sc.useDelimiter("\n");
// 判斷是否還有下一個輸入項
while (sc.hasNext())
{
// 輸出輸入項
System.out.println("鍵盤輸入的內容是:" + sc.next());
}
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
}