缓冲流为了提高读写效率,缓冲流不能直接作用于文件,只能作用于节点流
速度提升非常明显
使用 BufferedInputStream、 BufferedOutputStream
读和写同字节流和字符流
复制:
@Test public void copy() throws IOException { FileInputStream fis = null; FileOutputStream fos = null; BufferedInputStream bis = null; BufferedOutputStream bos = null; try { File file1 = new File("C:\\Users\\11027\\Downloads\\潘石屹谈中国房价:是真实还是陷阱(中国已全网查删).mp4"); File file2 = new File("C:\\Users\\11027\\Downloads\\潘石屹谈中国房价:是真实还是陷阱(中国已全网查删)2.mp4"); fis = new FileInputStream(file1); fos = new FileOutputStream(file2); bis = new BufferedInputStream(fis); bos = new BufferedOutputStream(fos); byte[] buffer = new byte[10]; int len; while ((len=bis.read(buffer))!=-1){ //write方法里有自动flush方法,所有这里就不用手动flush了 bos.write(buffer,0,len); } } finally { if (bis!=null) bis.close(); if(bos!=null) bos.close(); //外层流关闭后内层流会自动关闭,所有内层流关闭可以省略 if(fis!=null) fis.close(); if(fos!=null) fos.close(); } }使用: BufferedReader、 BufferedWriter 除了按照上面的方法,还可以使用readLine方法
@Test public void copy2() throws IOException { FileReader fileReader = null; FileWriter fileWriter = null; BufferedReader br = null; BufferedWriter bw = null; try { File file1 = new File("a.txt"); File file2 = new File("c.txt"); fileReader = new FileReader(file1); fileWriter = new FileWriter(file2); br = new BufferedReader(fileReader); bw = new BufferedWriter(fileWriter); String str=""; while ((str = br.readLine())!=null){ bw.write(str+"\n"); } } finally { if (br!=null) br.close(); if(bw!=null) bw.close(); } }```