java.io中的System.in、 System.out和System.err


System.in, System.out, System.err這3個流同樣是常見的數據來源和數據流目的地。使用最多的可能是在控制台程序里利用System.out將輸出打印到控制台上。

JVM啟動的時候通過Java運行時初始化這3個流,所以你不需要初始化它們(盡管你可以在運行時替換掉它們)。

 

System.in

System.in是一個典型的連接控制台程序和鍵盤輸入的InputStream流。通常當數據通過命令行參數或者配置文件傳遞給命令行Java程序的時候,System.in並不是很常用。圖形界面程序通過界面傳遞參數給程序,這是一塊單獨的Java IO輸入機制。

 

System.out

System.out是一個PrintStream流。System.out一般會把你寫到其中的數據輸出到控制台上。System.out通常僅用在類似命令行工具的控制台程序上。System.out也經常用於打印程序的調試信息(盡管它可能並不是獲取程序調試信息的最佳方式)。

 

System.err

System.err是一個PrintStream流。System.err與System.out的運行方式類似,但它更多的是用於打印錯誤文本。一些類似Eclipse的程序,為了讓錯誤信息更加顯眼,會將錯誤信息以紅色文本的形式通過System.err輸出到控制台上。

 

 

System.out和System.err的簡單例子:

這是一個System.out和System.err結合使用的簡單示例:

try {
    InputStream input = new FileInputStream("c:\\data\\...");
    System.out.println("File opened...");
} catch (IOException e) {
    System.err.println("File opening failed:");
    e.printStackTrace();
}

  

 

替換系統流

盡管System.in, System.out, System.err這3個流是java.lang.System類中的靜態成員(譯者注:這3個變量均為final static常量),並且已經預先在JVM啟動的時候初始化完成,你依然可以更改它們。只需要把一個新的InputStream設置給System.in或者一個新的OutputStream設置給System.out或者System.err,之后的數據都將會在新的流中進行讀取、寫入。

可以使用System.setIn(), System.setOut(), System.setErr()方法設置新的系統流(譯者注:這三個方法均為靜態方法,內部調用了本地native方法重新設置系統流)。例子如下:

OutputStream output = new FileOutputStream("c:\\data\\system.out.txt");
PrintStream printOut = new PrintStream(output);
System.setOut(printOut);

現在所有的System.out都將重定向到”c:\\data\\system.out.txt”文件中。請記住,務必在JVM關閉之前沖刷System.out(譯者注:調用flush()),確保System.out把數據輸出到了文件中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM