不是大神,想到两点。一是释放缓存,如果不关闭流会造成内存泄露。二是,如果存在写操作,有些是在缓存中还没真正写道磁盘文件中,关闭流的时候回刷新缓存,真正将数据写到磁盘文件中
不要拘泥于流这个说法,流只是一种抽象,方便组合和理解,如果理解不了,暂时不用去管他
文件一般都是在硬盘的,硬盘比内存慢1000倍左右(SSD缓解了这种速度差异,但是仍旧有)。另外,硬盘的随机读取是比较慢的(硬盘是一个盘子,连续读取可以在一次旋转中完成,读多个不同位置,而且顺序不规律的话,就必须走多次旋转,当然硬盘也有缓存,姑且理解为它没有缓存,简化理解),内存随机读取和连续读取性能差不多。
所以,对文件的读写都是带缓存的,理论上缓存不满,是不把读写加之到实际硬盘的(也有反例,也可以强制写)。而关闭文件则是释放缓存所占内存,同时,保证缓存的内容写回到硬盘。
常见的操作系统,对于文件的读写接口都是通过描述符或者句柄来间接提供SDK,真正的读写是在内核。而这些描述符或者句柄,设计的时候都是有数量上限的,不释放的后果就是到最后系统无法分配资源,只能重启。