理解性版本:
package java7; import org.junit.Test; import java.io.*; /** * 处理流之一:缓冲流的使用 * 1.缓冲流: * BufferedInputStream * BufferedOutputStream * BufferedReader * BufferedWriter * 2.作用:提高流的读取和写入效率 * * @author 冀帅 * @date 2020/8/19-17:02 */ public class BufferedTest { /* *实现非文本文件的复制 * * */ @Test public void test() throws IOException { // 1.造文件 File file =new File("IMG_20200817_113832.jpg"); File file1 = new File("123456789.jpg"); // 2.造流 // 2.1 造节点流 FileInputStream fis = new FileInputStream(file); FileOutputStream fos = new FileOutputStream(file1); // 2.2 造缓冲流 BufferedInputStream bis = new BufferedInputStream(fis); BufferedOutputStream bos = new BufferedOutputStream(fos); // 3.复制的细节:读取和写入 byte[] Bytes = new byte[1024]; int len; while ((len = bis.read(Bytes))!=-1){ bos.write(Bytes,0,len); } // 4.关闭流:先关外层流,再关闭内层流 bis.close(); bos.close(); } }最终版本:
package java7; import org.junit.Test; import java.io.*; /** * 处理流之一:缓冲流的使用 * 1.缓冲流: * BufferedInputStream * BufferedOutputStream * BufferedReader * BufferedWriter * 2.作用:提高流的读取和写入效率 * * @author 冀帅 * @date 2020/8/19-17:02 */ public class BufferedTest { /* *实现非文本文件的复制 * * */ @Test public void test() { // 1.造文件 BufferedInputStream bis = null; BufferedOutputStream bos = null; try { File file =new File("IMG_20200817_113832.jpg"); File file1 = new File("123456789.jpg"); // 2.造流 // 2.1 造节点流 FileInputStream fis = new FileInputStream(file); FileOutputStream fos = new FileOutputStream(file1); // 2.2 造缓冲流 bis = new BufferedInputStream(fis); bos = new BufferedOutputStream(fos); // 3.复制的细节:读取和写入 byte[] Bytes = new byte[1024]; int len; while ((len = bis.read(Bytes))!=-1){ bos.write(Bytes,0,len); } } catch (IOException e) { e.printStackTrace(); } finally { // 4.关闭流:先关外层流,再关闭内层流 try { if (bis!=null) bis.close(); } catch (IOException e) { e.printStackTrace(); } try { if (bos!=null) bos.close(); } catch (IOException e) { e.printStackTrace(); } } // //说明:关闭外层时,会自动关内层 // fis.close(); // fos.close(); } }