当前位置: 首页 > article >正文

Java(五十)java-IO流-缓冲流(BufferedInputStream和BufferedOutputStream)

接下来我们学习一下java缓冲流中的读取和写入类BufferedInputStream(缓冲字节输入流)和BufferedOutputStream(缓冲字节输出流)类,这个两个类的使用方法和IO流中的FileOutputStream和FileInputStream类是差不多的。但是Buffer类的效率相对来说要高一些。

一:BufferedInputStream(提供了缓冲区、高效)

1:构造方法

他的构造方法比较奇怪,他所需要的参数是FileInputStream的对象。

2:成员方法(与FileInputStream一致)

使用示例:

    public static void main(String[] args) {
        try {
            BufferedInputStream bufIn = new BufferedInputStream(new FileInputStream("aaa.txt"));
            byte[] by1 = new byte[2048];
            int a1 = 0;
            while ((a1 = bufIn.read(by1)) != -1) {
                String s1 = new String(by1, 0, a1);
                System.out.println(s1);
            }
            bufIn.close();
        } catch (Exception e) {
            // TODO: handle exception
        } finally {
 
        }
    }

控制台输出:

我国目前并未出台专门针对网络爬虫?术的法律规范,但在司法实践中,相关判决已屡见不鲜,K 哥特设了“K哥爬虫普法?专栏,本栏目?过对真实
案例的分析,旨在提高广大爬虫工程师的法律意识,知晓如何合法合规利用爬虫?术,警钟长鸣,做?个守法?护法?有原则的技术人员??

我这里就不测试单个字符读取了,有兴趣的同学,可以自己测试一下。

二:BufferedOutputStream(提供了缓冲区、高效)

1:构造方法

他的构造方法比较奇怪,他所需要的参数是FileOutputStream的对象。

2:成员方法(与FileOutputStream一致)

 public static void main(String[] args) {
        try {
            byte[] by1 = { 48, 49, 50, 51, 52, 53, 54, 55 };
            BufferedOutputStream bufOut = new BufferedOutputStream(new FileOutputStream("bbb.txt"));
            bufOut.write(by1);
            bufOut.close();
        } catch (Exception e) {
            // TODO: handle exception
        } finally {
 
        }
    }

三:文件复制粘贴

这个就比较简单了,将上方的代码合并一下即可。代码如下:

public static void main(String[] args) {
        try {
            BufferedInputStream bufIn = new BufferedInputStream(new FileInputStream("aaa.txt"));
            byte[] by1 = new byte[2048];
            BufferedOutputStream bufOut = new BufferedOutputStream(new FileOutputStream("bbb.txt"));
            int a1 = 0;
            while ((a1 = bufIn.read(by1)) != -1) {
                bufOut.write(by1, 0, a1);
            }
            bufIn.close();
            bufOut.close();
        } catch (Exception e) {
            // TODO: handle exception
        } finally {
 
        }
    }

四:讨论

那么我们最后做一个讨论,是java中的IO流操作文件效率高还是java中的缓冲流操作文件效率高呢?

复制文件一共四种方式:

普通字节输入流 + 普通字节输出流:

        1.一次读取一个字节,一次写出一个字节                                  (时间太长,等不了了)

        2.一次读取一个字节数组,一次写出一个字节数组的一部分          4562

高效字节输入流 + 高效字节输出流:

        1.一次读取一个字节,一次写出一个字节                                     15352

        2.一次读取一个字节数组,一次写出一个字节数组的一部分          1344

通过上方的对比,我们可以发现,还是使用缓冲流的读取字节数组的方式效率最高。

以上大概就是java缓冲流的基本知识,有好的建议,请在下方输入你的评论。


http://www.kler.cn/a/500096.html

相关文章:

  • ubuntu NVIDIA 驱动程序安装指南
  • 手游业务该如何选择服务器?
  • 有心力场的两体问题
  • 第 32 章 - Elasticsearch 的应用场景与技术解决方案
  • 【MySQL】SQL菜鸟教程(一)
  • CES Asia 2025科技创新奖申报火热进行中,23家企业积极参与
  • 《拉依达的嵌入式\驱动面试宝典》—操作系统篇(四)
  • 【EI,Scopus检索 | 往届均已检索见刊】第四届智能系统、通信与计算机网络国际学术会议(ISCCN 2025)
  • 基于php的web系统漏洞攻击靶场设计与实践
  • 第十二章 标准库——7.net包
  • MySQL中的事务(如果想知道MYSQL中有关事务的知识,那么只看这一篇就足够了!)
  • python音乐播放器代码整理版
  • 大语言模型训练数据集格式
  • DeepSeek:性能强劲的开源模型
  • Redis集群模式下主从复制和哨兵模式
  • 深入学习 Python 爬虫:从基础到实战
  • git: hint:use --reapply-cherry-picks to include skipped commits
  • STM32如何使用内部晶振作为晶振
  • Spring Framework 5.3.x源码构建 (jdk-1.8, gradle 7.5.1, idea2024.3)
  • 【UE5 C++课程系列笔记】27——多线程基础——ControlFlow插件的基本使用