Java/Java IO 之道
System 是一個內建類的名稱,其中包含用於從鍵盤獲取輸入、在螢幕上列印文字以及執行檔案輸入/輸出 (I/0) 的方法和物件。
System.out 是我們用來列印文字的物件的名稱。當您呼叫 print 和 println 時,您是在名為 System.out 的物件上呼叫它們。
有趣的是,您可以列印 System.out
逐字 System.out.println (System.out); 逐字
輸出為
逐字 java.io.PrintStream@80cc0e5 逐字
像往常一樣,當 Java 列印一個物件時,它會列印物件的型別(即 PrintStream)、定義該型別的包(即 java.io)以及物件的唯一識別符號。在我的機器上,識別符號是 80cc0e5,但如果您執行相同的程式碼,您可能會得到不同的結果。
還有一個名為 System.in 的物件,其型別為 BufferedInputStream。System.in 使得可以從鍵盤獲取輸入。不幸的是,它並不能輕鬆地從鍵盤獲取輸入。
首先,您必須使用 System.in 建立一個新的 InputStreamReader。
逐字
InputStreamReader in = new InputStreamReader ("System.in");
逐字
然後您使用 in 建立一個新的 BufferedReader
逐字
BufferedReader keyboard = new BufferedReader (in);
逐字
所有這些操作的目的是,有一個方法可以在 BufferedReader 上呼叫,稱為 readLine,它從鍵盤獲取輸入並將其轉換為 String。例如
逐字
String s = keyboard.readLine (); System.out.println (s);
逐字
從鍵盤讀取一行並列印結果。
只有一個問題。當您呼叫 readLine 時,可能會出現一些錯誤,並且它們可能會導致 IOException。Java 中有一條規則,如果一個方法可能會導致異常,則應該說明這一點。語法如下所示
verbatim public static void main (String[] args) throws IOException
逐字
這表明 main 可能會“丟擲”IOException。您可以將丟擲異常視為類似於發脾氣。
從檔案讀取輸入同樣愚蠢。這是一個例子
逐字
public static void main (String[] args)
throws FileNotFoundException, IOException
processFile ("/usr/dict/words");
public static void processFile (String filename)
throws FileNotFoundException, IOException
FileReader fileReader = new FileReader (filename);
BufferedReader in = new BufferedReader (fileReader);
while (true)
String s = in.readLine();
if (s == null) break;
System.out.println (s);
逐字
此程式將命名檔案 (/usr/dict/words) 的每一行讀入一個 String,然後列印該行。同樣,宣告 throws FileNotFoundException、IOException 是編譯器要求的。物件型別 FileReader 和 BufferedReader 是 Java 用於執行極其常見、簡單的事情的極其複雜的類層次結構的一部分。除此之外,您不可能關心此程式的工作原理。