這篇來介紹IO
IO有分兩大方向 一個是位元串流、一個是字元
位元串流陣營裡面的IO就是 inputStream 跟 OutputStream
字元串流陣營裡面是 Reader 跟 Writer
而這兩個陣營的差別在於 位元串流一次是讀一個位元
而字元一次是讀一個”字”元 不管是哪種編碼、這個編碼一個字是幾個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 isr = new InputStreamReader( new FileInputStream("C:\NewsBIG5.txt");
BufferReader是緩衝式輸入串流,也就是先將串流輸入至記憶體緩衝區然後再一次讀出,這樣效能比較佳