zoukankan      html  css  js  c++  java
  • Java——IO类,字节流缓冲区

    字节流读取数据两种方式比较

    █ 一次读取一个字节
    █ 一次读取一个字节数组
           ☞每次可以读取多个数据,提高了操作效率
    public class CopyDemo {
    //第一步:将1.txt中的内容读入到内存            FileInputStream
    //第二步:将内存中读入的数据读入到2.txt      FileOutputStream
    //使用字节流来copy东西不会出现乱码,因为是把所有东西照搬过去,没有拿出来解析
    public static void main(String[] args) throws IOException {
                    FileInputStream fis = new FileInputStream("我的滑板鞋.mp4");    //任何文件格式都可以拷贝
                    FileOutputStream fos = new FileOutputStream("kaobei.mp4");
    //方法一:  效率低下,一次一个字节
    /*             int b = 0;
                    while((b = fis.read()) != -1){
                            fos.write(b);
                    }*/
    //方法二:  效率高,一次整个数组
                    byte[] bytes = new byte[1024];
                    int len = 0;
                    while((len = fis.read(bytes)) != -1){
                            fos.write(bytes,0,len);
                    }
                    fis.close();
                    fos.close();               
            }
    }





    字节缓冲流    ( 包装流,加入了一些缓冲区 8092 byte )

    █ 字节流一次读写一个数组的速度明显比一次读写一个字节的速度快很多,这是加入了数组这样的缓冲区效果,java本身在设计的时候,也考虑到了这样的情况,所以提供了字节缓冲区流
    █ 字节缓冲输出流
            ☞BufferedOutputStream
                BufferedInputStream(InputStream in);           //缓冲区大小默认是8192
    创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。
                BufferedInputStream(InputStream in, int size); 
    创建具有指定缓冲区大小的

    █ 字节缓冲输入流
            ☞BufferedInputStream
               BufferedOutputStream(OutputStream out);        
    创建一个新的缓冲输出流,以将数据写入指定的底层输出流。
               BufferedOutputStream(OutputStream out, int size);        
    创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流。

    public class BufferTestMain {
            public static void main(String[] args) throws IOException {
                    FileInputStream fis = new FileInputStream("我的滑板鞋.mp4");  
    // 这样的fis不带缓冲区
                    BufferedInputStream bfis = new BufferedInputStream(fis);
                    FileOutputStream fos = new FileOutputStream("kaobei.mp4");
                    BufferedOutputStream bfos = new BufferedOutputStream(fos);

    // 方法一:
    /*             int b = 0;
                    while ((b = bfis.read()) != -1) { 
     //看上去是一个字节一个字节的读,其实系统实现是一次读 8192 个字节到缓冲区
                            bfos.write(b);
                    }*/
    // 方法二:更快,缓冲区自带一个8192缓冲区,自己还定义了一个1024的缓冲区       
                    byte[] bytes = new byte[1024];
                    int len = 0;
                    while ((len = bfis.read(bytes)) != -1) {
                            bfos.write(bytes, 0, len);
                    }
            }
    }

  • 相关阅读:
    利用python 掌握机器学习的过程
    SendMessage用法
    python函数形参中的*args和**kwargs
    python 用win32修改注册表,修改打开IE浏览器的配置
    python .py .pyc .pyw .pyo .pyd区别
    代码性能提升10倍(ForkJoin)
    雪花算法生成id
    配置虚拟机
    kafka多线程消费
    Redis存储对象序列化和反序列化
  • 原文地址:https://www.cnblogs.com/meihao1203/p/9181937.html
Copyright © 2011-2022 走看看