fclose 之后文件没有马上更新,是不是没有马上写入磁盘.
我用TCP传文件,传完之后服务端fclose关闭文件,然后再用stat读取文件大小,返回给客户端.
现在读取到的文件大小老是错的,自己用资源管理器看文件也是,fclose之后文件大小还在慢慢增加,大约要5-10秒左右才能加到正确的大小.
不应该是fclose之后就写入磁盘的吗?
[解决办法]
fwrite以后,再fflush一下就行了。
[解决办法]
stat不靠谱吧,换GetFileSizeEx试试
[解决办法]
5~10秒,是否缓存的数据多,27M的数据1K的写速度有影响。你是接受完才开始写文件的么?
[解决办法]
可以边传边看下文件的变化,如果文件在传输过程中并没有逐渐增大,那就是还没有写入文件。可以考虑缓存、网络同步等问题。
先可以考虑每接受1K就fclose一下,用来测试,等找到问题原因后,再修正这种写法。
[解决办法]
即使有缓存,一个字节都没写进去,stat也不应该有错。
例外是nfs,及直接扇区读写。