JAVA檔案流的讀寫
阿新 • • 發佈:2018-11-23
package trsdf; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; public class FileStreamRW { public static void main(String[] args) { /* * 寫一個檔案到磁碟 */ //File f =new File("a.txt");//不指定絕對路徑,則預設寫入到專案工作空間目錄下 File f =new File("D:/a.txt");//絕對路徑可以用單斜槓/ 或雙反斜槓\\ try { // 構建FileOutputStream物件,檔案不存在會自動新建 FileOutputStream fop =new FileOutputStream(f); // 構建OutputStreamWriter物件,引數可以指定編碼,預設為作業系統預設編碼,windows上是gbk OutputStreamWriter writer =new OutputStreamWriter(fop, "utf-8"); // 寫入到緩衝區 writer.append("這是一個測試文字"); //換行 writer.append("\r\n"); // 寫入到緩衝區 writer.append("English12346"); // 重新整理快取衝,寫入到檔案,如果下面已經沒有寫入的內容了,直接close也會寫入 //writer.flush(); //關閉寫入流,同時會把緩衝區內容寫入檔案,所以上面的註釋掉 writer.close(); //關閉檔案輸出流,釋放系統資源 fop.close(); System.out.println("檔案"+f.getName() +"\n已經寫到磁碟"+f.getAbsolutePath() +"\n檔案大小"+f.length()+"位元組"); } catch (FileNotFoundException e) { System.out.println("找不到檔案"); e.printStackTrace(); } catch (UnsupportedEncodingException e) { System.out.println("不支援修改編碼"); e.printStackTrace(); } catch (IOException e) { System.out.println("io異常"); e.printStackTrace(); } /* * 把剛剛寫到磁碟的檔案讀到控制檯顯示出來 */ try { // 構建FileInputStream物件 FileInputStream fip =new FileInputStream(f); // 構建InputStreamReader物件,編碼與寫入相同 InputStreamReader reader=new InputStreamReader(fip,"utf-8"); //使用執行緒安全的StringBuffer 接收輸入流 StringBuffer sbf =new StringBuffer(); while(reader.ready()) {//判斷輸入流是否準備好 sbf.append((char)reader.read());// 轉成char加到StringBuffer物件中 } //讀到控制檯顯示出來 System.out.println("\n\n顯示檔案內容:\n"+sbf.toString()); // 關閉讀取流 reader.close(); // 關閉輸入流,釋放系統資源 fip.close(); } catch (FileNotFoundException e) { System.out.println("找不到檔案"); e.printStackTrace(); } catch (UnsupportedEncodingException e) { System.out.println("不支援修改編碼"); e.printStackTrace(); } catch (IOException e) { System.out.println("io異常"); e.printStackTrace(); } } }