当文件够大时,而我的缓冲区只有1024大小,那我…………?
当文件够大时,而我的缓冲区只有1024大小,那我该怎样办才能把这个大文件都用WriteFile()写到硬盘中,我用了ReadFile()这个函数把内容写到缓冲区,我想这个问题肯定很简单,用一个循环就行了,但我不知道怎么用,请高手指教,能否举个简单的例子, 问题点数:30、回复次数:7Top
1 楼pcman1990(pcman)回复于 2002-06-11 17:15:51 得分 0
假设:BYTE buf[10000];
LPVOID p = buf;
int nSize = sizeof(buf) / sizeof(BYTE);
int nWrite;
int n = 0;
do
{
BOOL bSucceeded = WriteFile(hFile, p, 1024, &nWrite, NULL);
if(!bSucceeded) break;
++ n;
int m = n * 1024;
if(m >= nSize) break;
p += m;
}Top
2 楼136206(521)回复于 2002-06-11 17:29:15 得分 0
我的问题是缓冲区,也就是buf只有1024,而不是10000或是更大,这样我该怎么办?Top
3 楼nullhue(dream.vision.realiz)回复于 2002-06-11 17:29:55 得分 0
while(1)
{
bRead=ReadFile(hFile,
szBuff,
1024,
&dwRead,
NULL);
if(!bRead)
break;
if(dwRead==0)
break;
WriteFile(hFile, p, 1024, &nWrite, NULL);
}
Top
4 楼nullhue(dream.vision.realiz)回复于 2002-06-11 17:31:34 得分 0
WriteFile(hWiteFile, szBuff, 1024, &nWrite, NULL);
Top
5 楼mfkzj(鹰翔)回复于 2002-06-11 17:32:40 得分 0
hFile=fopen(szFilePath,"rb");
while(!feof(hFile))
{
读写的循环
先从源文件读
写如新文件
}Top
6 楼nullhue(dream.vision.realiz)回复于 2002-06-11 17:32:49 得分 0
WriteFile(hWiteFile, szBuff, dwread, &nWrite, NULL);Top
7 楼sh210(.....)回复于 2002-07-19 17:39:07 得分 30
while(1)
{ ReadFile(hFile,byteBuf,500,&dwRead,NULL);//将打开的文件内容写到缓冲区,成功
if(dwRead==0)
break;
WriteFile(tapech,byteBuf,dwRead,&nWrite,NULL);//把缓冲区的内容写到磁带中
}Top




