跳轉到內容

Java/Java IO 之道

來自 Wikibooks,開放世界中的開放書籍

Java 中的輸入和輸出

[編輯 | 編輯原始碼]

系統物件

[編輯 | 編輯原始碼]

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 用於執行極其常見、簡單的事情的極其複雜的類層次結構的一部分。除此之外,您不可能關心此程式的工作原理。

華夏公益教科書