天天看點

IO中的BufferedWriter和BufferedReader以及讀取時出現亂碼的問題

IO中的BufferedWriter和BufferedReader以及讀取時出現亂碼的問題

  1. BufferedWriter作用:

    将文本寫入字元輸出流,緩沖各個字元,進而提供單個字元、數組和字元串的高效寫入。

其有哪些方法:

close() : 關閉此流,但要先重新整理它。

flush() : 重新整理該流的緩沖。

newLine() : 寫入一個行分隔符。

write(char[] cbuf, int off, int len) : 寫入字元數組的某一部分。

write(int c) : 寫入單個字元。

write(String s, int off, int len) : 寫入字元串的某一部分。

  1. BufferedReader作用:

讀取文本檔案 ,會先盡量從檔案中讀入字元資料并置入緩沖區,而之後若使用read()方法,會先從緩沖區中進行讀取。

實戰代碼:

public class Test {

    public static void main(String[] args) throws Exception {

        //BufferedWriter将字元寫入到檔案中
        FileWriter fw = new FileWriter("E:\\Buffered.txt");//建立一個檔案
        BufferedWriter bufw = new BufferedWriter(fw);
        bufw.write("hello world");
        bufw.newLine(); //作用是換行
        bufw.write("this is test");
        bufw.newLine();
        bufw.write("你好,這裡是測試!");
        bufw.flush();
        bufw.close();

        //讀取檔案,然後進行轉碼,防止出現亂碼的問題
        InputStreamReader isr = new InputStreamReader(new FileInputStream("E:\\Buffered.txt"), "UTF-8");
        //建立字元緩沖輸入流對象
        BufferedReader br = new BufferedReader(isr);
        //讀資料
        //一次讀取一個字元數組
        char[] chs = new char[1024];
        int len = 0;
        while ((len = br.read(chs)) != -1) {
            System.out.println(new String(chs, 0, len));
        }
        //釋放資源
        br.close();
    }
    }
           

檢視運作結果:

IO中的BufferedWriter和BufferedReader以及讀取時出現亂碼的問題

檢視E盤是否成功建立了這個檔案:

IO中的BufferedWriter和BufferedReader以及讀取時出現亂碼的問題

成功!!!