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

devtools/2025/1/14 16:51:46/

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

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

1:构造方法

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

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

使用示例:

java">    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一致)

java"> 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 {}}

三:文件复制粘贴

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

java">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.ppmy.cn/devtools/150456.html

相关文章

hive3后创建表默认是外部表问题

hive3 hive4创建的表总是外部表&#xff0c;但是操作使用和内部表一样&#xff0c;修改成为默认是内部表 <property><name>metastore.metadata.transformer.class</name><value> </value> </property>注意空格是必须的 后面执行 desc fo…

从epoll事件的视角探讨TCP:三次握手、四次挥手、应用层与传输层之间的联系

目录 一、应用层与TCP之间的联系 二、 当通信双方中的一方如客户端主动断开连接时&#xff0c;仅是在客户端的视角下连接已经断开&#xff0c;在服务端的眼中&#xff0c;连接依然存在&#xff0c;为什么&#xff1f;——触发EPOLLRDHUP事件&#xff1a;对端关闭连接或停止写…

LabVIEW驱动电机实现样品自动搜索

利用LabVIEW控制电机驱动相机在XY平面上进行扫描&#xff0c;以检测样品位置。样品最初可能位于相机视野范围之外&#xff0c;需要实现自动搜索样品位置并完成精确定位扫描的功能。该系统需具有以下特点&#xff1a; 高效搜索&#xff1a;能够快速确定样品位置&#xff0c;缩短…

电脑之故障检测(Computer Fault Detection)

电脑之故障检测 在日常使用电脑的过程中&#xff0c;我们难免会遇到各种各样的故障。从简单的软件冲突到复杂的硬件损坏&#xff0c;这些问题往往让人头疼不已。然而&#xff0c;掌握一些基本的电脑故障检测方法&#xff0c;可以帮助我们快速定位问题所在&#xff0c;并采取相…

CHAIN OF RESPONSIBILITY(职责链)—对象行为型模式

1. 意图 使多个对象都有机会处理请求&#xff0c;从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链&#xff0c;并沿着这条链传递该请求&#xff0c;直到有一个对象处理它为止。 2. 动机 考虑一个图形用户界面中的上下文有关的帮助机制。用户在界面的任一部分…

1.组件的三大组成部分注意点(结构/样式/逻辑)scoped解决样式冲突/data是一个函数2.组件通信组件通信语法父传子子传父

学习目标 1.组件的三大组成部分注意点&#xff08;结构/样式/逻辑&#xff09; scoped解决样式冲突/data是一个函数 2.组件通信 组件通信语法 父传子 子传父 非父子通信&#xff08;扩展&#xff09; 3.综合案例&#xff1a;小黑记事本&#xff08;组件版&#xff09; …

两分钟解决 :![rejected] master -> master (fetch first) , 无法正常push到远端库

目录 分析问题的原因解决 分析问题的原因 在git push的时候莫名遇到这种情况 若你在git上修改了如README.md的文件。由于本地是没有README.md文件的&#xff0c;所以导致 远端仓库git和本地不同步。 将远端、本地进行合并就可以很好的解决这个问题 注意&#xff1a;直接git pu…

Markdown中甘特图的使用

Markdown中甘特图的使用 1. 前言2. 语法详解2.1 甘特图语法 3. 使用场景及实例4. 小结5. 其他文章快来试试吧&#x1f58a;️ Markdown中甘特图的使用 &#x1f448;点击这里也可查看 1. 前言 Markdown 的原生语法不支持绘制图形&#xff0c;但通过扩展模块&#xff0c;我们可…