首页 > 编程知识 正文

fread和fwrite,fread和fwrite读写二进制文件

时间:2023-05-05 19:29:54 阅读:260425 作者:4639

fread和fwrite是标准IO,在调用文件IO的基础上封装了用户空间缓冲区。这样可以减少系统调用的次数,在频繁使用IO的场景中减少系统开销。

因此,调用fwrite向文件中写入数据时,数据不会立即被写入到文件中,而是先被写入到内存中的缓冲区,当缓冲区满或者调用fclose()或者调用fflush()后才会将内存缓冲区中的数据写入到目标文件中。其实,在调用fflush()后,再次调用fsync()方能保证fwite写入的数据写入到磁盘中。

 调用fread()会一次性从文件中读出相当多的数据到用户空间缓冲区中,然后慢慢从用户空间缓冲区取走数据,当缓冲区空,再次调用read()函数读取文件内容到缓冲区。当在fread()后调用fflush()时,会清除用户空间缓冲区中未被应用程序读取过的数据。

当使用标准IO并且需要立即将写入到用户空间缓冲区的数据刷新到文件中时,在fwrite()后调用fflush()。一般不需要在fread()后调用fflush()。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。