关于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 则不会。
添加回答
举报
0/150
提交
取消