3.7.3 文件輸入與輸出
阿新 • • 發佈:2018-12-15
容易 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 文件輸入與輸出