如下代碼是一個Java小程序,用於往文件寫入數據。每次運行該程序,一個新的文件被創建,之前舊的文件被刪除;這與往文件追加內容是有區別的。
public static void writeFile1() throws IOException { File fout = new File("out.txt"); FileOutputStream fos = new FileOutputStream(fout); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos)); for (int i = 0; i < 10; i++) { bw.write("something"); bw.newLine(); } bw.close(); }
這個例子使用了FileOutputStream,除了該類你還可以使用FileWriter或者PrintWriter,對於文本操作,通常是足夠的;
使用FileWriter:
public static void writeFile2() throws IOException { FileWriter fw = new FileWriter("out.txt"); for (int i = 0; i < 10; i++) { fw.write("something"); } fw.close(); }
使用PrintWriter:
public static void writeFile3() throws IOException { PrintWriter pw = new PrintWriter(new FileWriter("out.txt")); for (int i = 0; i < 10; i++) { pw.write("something"); } pw.close(); }
使用OutputStreamWriter:
public static void writeFile4() throws IOException { File fout = new File("out.txt"); FileOutputStream fos = new FileOutputStream(fout); OutputStreamWriter osw = new OutputStreamWriter(fos); for (int i = 0; i < 10; i++) { osw.write("something"); } osw.close(); }
Java文檔中的相關說明:
對於往文件寫入字符數據,FileWriter是一個非常方便的類,這個類的構造方法使用了默認的字符編碼和字節緩沖區大小。如果要自己指定這些值,可以先在 FileOutputStream 上構造一個 OutputStreamWriter。
PrintWriter是向文本輸出流打印對象的格式化表示形式,該類實現了PrintStream中的所有print方法,它不包含用於寫入原始字節的方法,對於這些字節,程序應該使用未編碼的字節流進行寫入。
主要的區別是PrintWriter提供了一些額外的方法用於格式化輸出,如println、printf。另外如果發生任何I/O異常,FileWriter會拋出IOException,二PrintWriter不會拋出IOException,相反,它會設置一個boolean標志,該標志可以通過調用checkError()方法獲取。PrintWriter在每次寫入數據后會自動調用flush方法,然而對於FileWriter,調用者需要自己特別留意flush方法的調用。
譯文鏈接:http://www.programcreek.com/2011/03/java-write-to-a-file-code-example/