1. 程式人生 > >3.7.3 文件輸入與輸出

3.7.3 文件輸入與輸出

容易 write writer 給定 處理 nextline 方式 lena except

想要對文件進行讀取,就需要一個File對象構造一個Scanner對象,如下所示: Scanner in = new Scanner(Paths.get("myfile.txt), "UTF-8"); 如果文件名中包含反斜杠符號,就要記住在每個反斜杠之前再加一個額外的反斜杠:"c:\\mydirectory\\myfile.txt" import java.io.IOException; import java.lang.Exception; import java.nio.file.Paths; public static void main(String[] args) throws IOException { Scanner in = new Scanner(Paths.get("C:\\Users\\Avention\\myfile.txt"),"UTF-8"); //以後都使用絕對路徑吧 try{ while (true){ String s = in.nextLine(); System.out.println(s); } } catch (Exception e){ e.printStackTrace(); } } ?Mark 滿意 Josn java.util.NoSuchElementException: No line found at java.util.Scanner.nextLine(Unknown Source) at myjavapp.Hello.main(Hello.java:22) 註釋:
上述代碼中指定了"UTF-8"字符編碼,這對於互聯網上的文件很常見(不過並不是普遍適用)。讀取一個文本文件時,要知道它的字符編碼。如果省略字符編碼,則會適用運行這個Java程序的機器的“默認編碼”。這不是一個好主意,如果在不同的機器上運行這個程序,可能會有不同的表現。 現在,就可以利用前面介紹的任何一個Scanner方法對文件進行讀取。 要想寫入文件,就需要構造一個 PrintWriter 對象。在構造器中,只需要提供文件名: PrintWriter out = new PrintWriter("myfile.txt","UTF-8"); 如果文件不存在,創建該文件。可以像輸出到System.out一樣使用print、println、printf命令 public static void main(String[] args) throws IOException { PrintWriter out = new PrintWriter("C:\\Users\\Avention\\myfile1.txt","UTF-8"); for(int n=1;n<=10;n++){ out.println(n+" Mark"); } out.close(); //文件寫完要關閉,切記。 } } 訪問文件與使用System.in 和 System.out一樣容易,如果用一個不存在的文件構造一個Scanner,或者不能被創建的文件明後才能構造一個PrintWriter,那麽就會發生異常。Java編譯器認為這些異常比“被零除”異常更嚴重。 註釋:當采用命令行方式啟動一個程序時,可以利用Shell的重定向語法將任意文件關聯到System.in和System.out; java MyProg < myfile.txt > output.txt 這樣就不用擔心處理IOException異常了。 java.util.Scanner Scanner(File f) 構造一個從給定文件讀取數據的Scanner。 Scanner(String data) 構造一個從給定字符串讀取數據的Scanner。 java.io.PrintWriter PrintWriter(String filename) 構造一個將數據寫入文件的PrintWriter。文件名由參數指定。 java.nio.file.Paths static Path get(String pathname) 根據給定的路徑名構造一個Path。

3.7.3 文件輸入與輸出