为了账号安全,请及时绑定邮箱和手机立即绑定

FileInputStream 没有缓冲,为什么 BufferedInputStream 更快?

FileInputStream 没有缓冲,为什么 BufferedInputStream 更快?

阿波罗的战车 2021-10-27 16:57:59
关于IO,我有两个问题。答:在教程和一些 StackOverflow 答案中,他们声称FileInputStream没有缓冲。真的吗 ?以下代码用于FileInputStream将数据读入字节数组(1024 字节)class Test {    public static void main(String[] args) throws IOException {        FileInputStream fis = new FileInputStream("./fos.txt");        FileOutputStream fos = new FileOutputStream("./copy.txt");        byte[] buffer = new byte[1024];   // Is this a buffer ?         int len;        while ((len = fis.read(buffer))!= -1) {            fos.write(buffer);        }        fos.close();        fis.close();    }}从 API 中,有一行:public int read(byte b[]) 抛出 IOException@param b:读取数据的缓冲区。B、如果都被缓冲了,都将数据放入缓冲区,然后从缓冲区中取数据,究竟是哪里BufferedInputStream比 快FileInputStream?谢谢
查看完整描述

2 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

FileInputStream 确实没有缓冲,但它在读取时确实提供了有限的缓冲能力。

最大的区别是 BufferedInputStream 支持 mark() 和 reset() 而 FileInputStream 不支持。

mark(int readlimit) 将允许您在流中设置一个位置供以后使用。reset() 会将您在流中的位置设置为 mark(int readLimit) 中指定的位置

为了支持 mark() 和 reset() BufferedInputStream 必须维护一个内部缓冲区,而 FileInputStream 则不会。


查看完整回答
反对 回复 2021-10-27
  • 2 回答
  • 0 关注
  • 224 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信