当前位置: 首页 > 知识库问答 >
问题:

BufferedInputStream中的读取方法

东方志尚
2023-03-14

我在一个教程中看到,BufferedInputStream类本身中的int read(字节b[],int off,int len)使用read()方法读取数据。

所以我的问题是,正常模式和不使用BufferedInputStream和使用buffer有什么区别?缓冲区应该以块的形式读取字节以降低成本,但这里它是逐字节读取。

共有1个答案

屈健柏
2023-03-14

的确,最简单的具体InputStream只需要实现读取单个字节的方法(即InputStream.read()方法)。

同样,对于这样一个底层的InputStream,使用BufferedInputStream并没有任何性能优势,因为BufferedInputStream。读取(字节b[],int off,int len)取决于输入流。读取(字节b[],int off,int len)(在InputStream中)取决于InputStream。read()方法。

然而

许多(大多数)“典型”的InputStream子类(例如java.io.FileInputStream用于读取文件,java.net.SocketInputStream用于从网络连接读取,java.util.zip.ZipFile.ZipFileInputStrem用于从zip文件读取数据)确实实现了读取(字节b[],int off,int len)方法。

对于所有这些InputStream子类,使用BufferedInputStream在读取单个字节(即调用read()方法)时提供了巨大的性能优势,因为这些类执行获取单个字节的系统调用(FileInputStream),其他人分配长度为1的字节数组并调用read(byte[]b)(这反过来调用read(b,0,b.length))来读取单个字节(SocketInputStreamZipFileInputStream)。

注意:我用作查找InputStream子类的基础的项目有326个不同的InputStream子类。我没有检查它们中的每一个来决定BufferedInputStream是否对它们有益,我只是检查了我倾向于使用的几个。

 类似资料:
  • 我正在编写一个代码,使用BufferedInputStream从用户处读取输入,但由于BufferedInputStream读取字节,我的程序只读取第一个字节并打印它。除了只读取第一个字节外,还有什么方法可以读取/存储/打印整个输入(将是整数)? 输出: [shadow@localhostcodechef]$java巨大输入测试5452 5

  • 我知道将BufferedInpurStream包装在FileInputStream周围会使读取操作更快,但我想知道如何做到这一点。我看了BufferedInpurStream的源代码,得到了一些东西。这是我的理解 当我做了这件事。read(),在内部,它将首先在缓冲区中一次读取字节块,然后从缓冲区中逐个读取每个字节,而不是从文件中读取(成本更高)。一旦缓冲区为空,它将再次用字节块填充它 而使用Fi

  • 关于BufferedInputStream的使用,我有几个问题: 首先,我听说BufferedInputStream可以显著提高性能,如果您从硬盘上逐字节读取数据的话。 > 在这里使用BufferedInputStream会被证明非常有用吗? 同样,BufferedInputStream在逐字节读取时是否仅在套接字中起作用,即逐字节读取是否仅对预加载缓冲区有用?

  • 问题内容: 让我以谨慎的态度为这篇文章做开头。我是Java的初学者。我已经对PHP进行了一段时间的编程,但是我准备制作一个桌面应用程序,因此出于各种原因,我决定使用Java。 我正在处理的应用程序处于起步阶段(少于5个类),我需要从本地文件读取字节。通常,文件当前小于512kB(但将来可能会更大)。目前,我正在使用a 将文件读取为三个字节的数组,这完全可以满足我的要求。但是,我已经看到一个提及,并

  • 我绝望了,。。。我已经试了很多次了,没有运气。请帮忙 背景知识:我使用raspberry Pi 3开发了一个网络摄像头流媒体服务器,因为我不想要可用的服务器。使用raspistill时,fps非常低(4fps),这就是为什么我考虑使用v4l2选项来流式传输网络摄像机。为此,我将mjpeg视频输出到管道中。 从该管道读取时,将显示第一个jpeg图像,但连续读取返回null。 为了进一步调查这一点,我

  • 本文向大家介绍python读取xlsx的方法,包括了python读取xlsx的方法的使用技巧和注意事项,需要的朋友参考一下 如下所示: 以上这篇python读取xlsx的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。