這是個小細節。windows
用fwrite寫文件的時候,我發現刷新文件夾,對應文件大小一直是0。緩存
網上有一篇博客寫得比較完善http://blog.csdn.net/sctq8888/article/details/7409985。spa
C語言中的:標準IO都有緩存區,這和系統緩衝不一樣,咱們使用fflush()只保證了將IO緩衝寫入系統緩衝中,使IO讀操做能成功,但系統何時寫入磁盤,由系統決定,通常是達到必定量時系統他就寫入磁盤。固然能夠強制系統將系統文件緩衝的內容寫入磁盤。 系統調用中的read/write是將內容直接寫到系統的文件緩衝區。 .net
在windows下文件緩衝內容寫到磁盤:code
#include <stdio.h> #include <io.h> FILE* fp = fopen("./test.dat", "w+"); fwrite(buffer, size, 1, fp); int fd = _fileno(fp); //獲取文件描述符 _commit(fd); //強制寫硬盤
這樣就能夠實時的看到文件寫到磁盤上進去了。blog