About CFile读写文件
将接收到的数据放在puffer中,将puffer中的数据写入文件。
问题出现了,接受数据的速度很快。2分钟经过buffer的数据大约5M,但是存放的是文件就只有20k。。。
这里问题有可能处在那里呢?
[解决办法]
你没
WriteFile.SeekToEnd();
int i = WriteFile.Open(FilePathName.GetBuffer(),CFile::modeCreate |CFile::modeNoTruncate | CFile::modeWrite); //Count++; Count = Count+dwBufSize;//这里接收到的大小和写入的大小相差太大 WriteFile.SeekToEnd(); //注意到最后再写 WriteFile.Write(pBuffer, dwBufSize); // Write it WriteFile.Flush(); //TRACE("%d\n",Count); pBuffer = NULL; delete pBuffer;
[解决办法]
你是想表达流式读取是吧?但是你的理解可能有误。
“我是这样想的,只要写的赢,就直接写,不中转一次,效率更高点”
内存数据读写速度比IO(硬盘读写)要快很多倍,建立缓冲区就是为了防止有数据就立即写入硬盘,减少IO操作的次数,每一次IO的性能开销比写内存大得多。因此,建立一个缓存存储数据是很有必要的。从硬盘读取数据也是一样。但是缓存的大小不宜太大,适合就行。这些在频繁数据操作或者大数据量的设计效果尤为明显。