当前位置: 首页 > 图灵资讯 > 技术篇> 字节流缓冲

字节流缓冲

来源:图灵教育
时间:2023-12-20 18:01:22

字节缓冲流字节缓冲流结构

  • 介绍字节缓冲流

    • lBufferOutputStream:实现缓冲输出流。 通过设置这样的输出流,应用程序可以将字节写入底层输出流,而不需要对每个字节进行调用

    • lBufferedInputStream:创建BufferedInputStream将创建内部缓冲区数组。 当从流中读取或跳过字节时,内部缓冲区将根据需要从包含的输入流中重新填充,许多字节一次

  • 构造方法:

    方法名说明BufferedOutputStream(OutputStream out)创建字节缓冲输出流对象BuferedInputstreamer(InputStream in)创建字节缓冲输入流对象
 public class BufferStreamDemo {      public static void main(String[] args) throws IOException {          //字节缓冲输出流:BufferedOutputStream(OutputStream out)             BufferedOutputStream bos = new BufferedOutputStream(new  FileOutputStream("51cto\\bos.txt"));          //写数据          bos.write("hello\r\n".getBytes());          bos.write("world\r\n".getBytes());          ///释放资源          bos.close();                  ///字节缓冲输入流:BufferedInputStream(InputStream in)          BufferedInputStream bis = new BufferedInputStream(new FileInputStream("51cto\\bos.txt"));            ///一次读取字节数据  //        int by;  //        while ((by=bis.read())!=-1) {  //            System.out.print((char)by);  //        }            ///一次读取字节数组数据          byte[] bys = new byte[1024];          int len;          while ((len=bis.read(bys))!=-1) {              System.out.print(new String(bys,0,len));          }            ///释放资源          bis.close();      }  }
使用字节流-复制视频文件

把 E:\51cto.avi 复制到模块目录下

public class CopyAviDemo {      public static void main(String[] args) throws IOException {          //记录开始时间          long startTime = System.currentTimeMillis();            ///复制视频  //        method1();  //        method2();  //        method3();          method4();            //记录结束时间          long endTime = System.currentTimeMillis();          System.out.println("共耗时:" + (endTime - startTime) + "毫秒");      }        //字节缓冲流一次读写字节数组      public static void method4() throws IOException {          BufferedInputStream bis = new BufferedInputStream(new  FileInputStream("E:\51cto\字节.avi"));          BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("myByteStream\\字节流复制图片.avi"));            byte[] bys = new byte[1024];          int len;          while ((len=bis.read(bys))!=-1) {              bos.write(bys,0,len);          }            bos.close();          bis.close();      }        ////字节缓冲流一次读写字节      public static void method3() throws IOException {          BufferedInputStream bis = new BufferedInputStream(new FileInputStream("E:\51cto\字节.avi"));          BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("myByteStream\\字节流复制图片.avi"));            int by;          while ((by=bis.read())!=-1) {              bos.write(by);          }            bos.close();          bis.close();      }        ///基本字节流一次读写字节数组      public static void method2() throws IOException {          FileInputStream fis = new FileInputStream("E:\51cto\字节.avi");          FileOutputStream fos = new FileOutputStream("myByteStream\\字节流复制图片.avi");          byte[] bys = new byte[1024];          int len;          while ((len=fis.read(bys))!=-1) {              fos.write(bys,0,len);          }           fos.close();          fis.close();      }        ///基本字节流一次读写一个字节      public static void method1() throws IOException {          FileInputStream fis = new FileInputStream("E:\51cto\字节.avi");          FileOutputStream fos = new FileOutputStream("myByteStream\\字节流复制图片.avi");          int by;          while ((by=fis.read())!=-1) {              fos.write(by);          }          fos.close();          fis.close();      }  }