当我使用FileInputStream读取一个对象(比如几个字节)时,底层操作是否涉及到:
1)读取整个磁盘块,以便在后续进行另一个读取操作时,不需要真正的磁盘读取,因为文件的那一部分已经在上次读取操作中获取了?
还是
2)需要进行新的磁盘访问,因为FileInputStream不做任何缓冲,应该使用BufferedInputStream来实现(1)的效果?
我认为由于FileInputStream使用read系统调用,它只从硬盘读取一组页面,因此一定会发生一些缓存。
1)读取整个磁盘块,以便在后续进行另一个读取操作时,不需要真正的磁盘读取,因为文件的那一部分已经在上次读取操作中获取了?
还是
2)需要进行新的磁盘访问,因为FileInputStream不做任何缓冲,应该使用BufferedInputStream来实现(1)的效果?
我认为由于FileInputStream使用read系统调用,它只从硬盘读取一组页面,因此一定会发生一些缓存。