Java

[Java]10.IO系列

這篇來介紹IO

IO有分兩大方向 一個是位元串流、一個是字元

位元串流陣營裡面的IO就是 inputStreamOutputStream
字元串流陣營裡面是 ReaderWriter
而這兩個陣營的差別在於 位元串流一次是讀一個位元
而字元一次是讀一個”字”元 不管是哪種編碼、這個編碼一個字是幾個bit 都一樣一次讀一個字

好 我們先來看一段程式碼,看不懂沒關係

	FileInputStream fis = new FileInputStream("C:\NewsBIG5.txt");
	InputStreamReader isr = new InputStreamReader(fis, "big5");
	BufferedReader br = new BufferedReader(isr);

	FileOutputStream fis2 = new FileOutputStream(new File("C:\NewsBIG52utf8.txt"));
	OutputStreamWriter isr2 = new OutputStreamWriter(fis2, "utf-8");

    String line ;
    while ((line = br.readLine()) != null){
        //System.out.println("line=" + line);

     	System.out.println(line);
     	isr2.write(line);

     }
    isr2.close();
    fis2.close();

這邊發現我們是用FileInputStream 去串流讀取txt檔進來 但是我們前面說過xxxInputStream系列的都是一次讀取一個位元的

而我們看是要看”字”阿,我們不希望看到一堆位元在畫面上嘛 但是這兩大陣營一邊是讀位元 一邊是字元 這時候就需要了一個很重要很重要的東西 叫做

inputstreamreader

 

inputstreamreader是一個特別的”字”元串流,他的功用就是整合兩大陣營的資料從位元串流取得輸入,然後解讀成字元

這時候 兩邊就可以互通了!

InputStreamReader isr = new InputStreamReader(
new FileInputStream("C:\NewsBIG5.txt");

BufferReader是緩衝式輸入串流,也就是先將串流輸入至記憶體緩衝區然後再一次讀出,這樣效能比較佳

Be the First to comment.

Leave a Comment

你的電子郵件位址並不會被公開。

(若看不到驗證碼,請重新整理網頁。)