java IO--位元組緩衝流
阿新 • • 發佈:2019-02-08
/** * ClassName: 位元組快取流 * 為了解決在寫入檔案操作時,頻繁的操作檔案所帶來的效能降低的問題 * BufferedOutputStream 內部預設的快取大小時8kb,每次寫入時儲存到的快取中的byte陣列中,當陣列存滿 時,會把陣列中的資料寫入檔案, * 並且快取下標歸零 * @Description: TODO * @author cai * @date 2018年10月17日 */ public class BufferStreamDemo { /* * 讀入記憶體的位元組快取流寫法 */ private static void byteReader() { File file = new File("C:\\Users\\Desktop\\需要被刪的\\新建文字文件 (4).txt"); InputStream in; try { in = new FileInputStream(file); //構造一個位元組緩衝流 BufferedInputStream bis = new BufferedInputStream(in); byte[] bytes = new byte[2048]; 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 byteReader2() { File file = new File("C:\\Users\\Desktop\\需要被刪的\\新建文字文件 (4).txt"); try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file))){ byte[] bytes = new byte[2048]; 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 byteWriter() { File file = new File("C:\\Users\\Desktop\\需要被刪的\\新建文字文件 (4).txt"); try { OutputStream out = new FileOutputStream(file); //構造一個位元組緩衝流 BufferedOutputStream bos = new BufferedOutputStream(out); // String info = "牛奶君"; out.write(info.getBytes()); bos.close(); //out.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { byteWriter(); byteReader(); } }