1. 程式人生 > >JAVA檔案流的讀寫

JAVA檔案流的讀寫

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();
		}
		
		
		
	}

}