字节流不是不需要flush。。。那是指从非本地磁盘的存储空间或者网络来源的流输出数据不需要flush,但是本地磁盘的存储是操作系统管理的,java无法保证操作系统的执行情况,也就是操作系统什么时候写进磁盘或者写没写进去是无法保证的。
通俗点说就是正常情况下,也包括flush方法,仅仅是告诉系统,我要写这些数据,但是操作系统可能很忙,就没管你,然后你以为他写完了,流关闭了,结果数据只写了一部分,还差一部分。
关于文件流的某些时候即便flush刷新之后也没有正确将数据写入文件,你可以用FileOutputStream里边的getFd获得该流指向的文件描述符,这个文件描述符属于一个中间的关联纽带,其中的sync方法会强制操作系统完成写入操作然后才返回方法。 |