java中,读取磁盘文件时,通常都使用BufferedInputStream包装FileInputStream。但是操作系统内核读取磁盘文件时,不是会将内存作为磁盘文件的缓冲区吗?那为什么还要在程序里自己使用缓冲区??
5 回答

繁华开满天机
TA贡献1816条经验 获得超4个赞

摇曳的蔷薇
TA贡献1793条经验 获得超6个赞

慕的地6264312
TA贡献1817条经验 获得超6个赞
操作系统不仅会将硬盘上的文件读到内存作为缓存使用,也会在内存开辟另外一段空间给内存的数据做缓存处理。
意义何在? 为了管理,也为了效率。
内存与内存之间的数据交换,比内存与硬盘之间的数据交换速率高了两个数量级。
当内存上的某个进程需要数据的时候,如果内存缓存有匹配的数据,则直接在缓存区取,
如果没有,再去硬盘上读。(写也同理)
Java为IO操作设计缓存的意义,也在于此,
不同的地方在于Java缓存的数据只能被Java的当前运行环境所使用。
与频繁得去跟操作系统的缓存拿数据相比,这提高了执行效率,
尤其是你的代码需要进行频繁的IO操作时,意义就体现出来了。
添加回答
举报
0/150
提交
取消