Java基礎IO類之緩衝流
阿新 • • 發佈:2019-12-03
首先要明確一個概念:
對檔案或其他目標頻繁的讀寫操作,效率低,效能差。
使用緩衝流的好處是:能夠高效的讀寫資訊,原理是先將資料先緩衝起來,然後一起寫入或者讀取出來。
對於位元組:
BufferedInputStream:為另一個輸入流新增一些功能,在建立BufferedInputStream時,會建立一個內部緩衝區陣列,用於緩衝資料。
BufferedOutputStream:通過設定這種輸出流,應用程式就可以將各個位元組寫入底層輸出流中,而不必針對每次位元組寫入呼叫底層系統。
對於字元:
BufferedReader:將字元輸入流中讀取文字,並緩衝各個字元,從而實現字元、陣列、和行的高效讀取。
BufferedWriter:將文字寫入字元輸出流,緩衝各個字元,從而提供單個字元、陣列和字串的高效寫入。
程式碼示例:
package IODemo; import java.io.*; /* 緩衝的目的: 解決在寫入檔案操作時,頻繁的操作檔案所帶來的效能降低的問題 BufferedOutStream 內部預設的緩衝大小是 8Kb,每次寫入儲存到快取中的byte陣列中,當陣列存滿是,會把陣列中的資料寫入檔案 並且快取下標歸零 */ public class BufferedDemo { //使用新語法 會在try裡面幫關掉這個流 private static void BuffRead2(){ File file = new File("d:\\test\\t.txt"); try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file))){ byte[] bytes = new byte[1024]; int len = -1; while ((len = bis.read(bytes))!=-1){ System.out.println(new String(bytes,0,len)); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } private static void BuffRead(){ File file = new File("d:\\test\\t.txt"); try { InputStream in = new FileInputStream(file); BufferedInputStream bis = new BufferedInputStream(in); byte[] bytes = new byte[1024]; int len = -1; while ((len = bis.read(bytes))!=-1){ System.out.println(new String(bytes,0,len)); } bis.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } private static void BuffWrite(){ File file = new File("d:\\test\\t.txt"); try { OutputStream out = new FileOutputStream(file); //構造一個位元組緩衝流 BufferedOutputStream bos = new BufferedOutputStream(out); String info = "我是落魄書生"; bos.write(info.getBytes()); bos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { // BuffWrite(); BuffRead2(); } }
&n