CopyFileEx函数的使用方法

CopyFileEx函数的使用方法,第1张

CopyFileEx函数的使用方法,第2张

CopyFile API函数可以用来复制文件。CopyFileEx函数的好处是提供了回调函数,程序员可以向用户展示复制的过程。
这里不介绍回调函数的详细参数了。你可以看看MSDN;为此;让我说一些在MSDN没有说过的话。
1。你多久回一次电话?答案是:每64KB数据传输一次;
2。回调的原因第一次返回:CALLBACK_STREAM_SWITCH,以后都会返回:CALLBACK_CHUNK_FINISHED
第一次表示复制已经开始,但是还没有复制。
3。回调函数返回PROGRESS_CONTINUE,表示继续复制文件;返回PROGRESS_CANCEL,意思是中断复制。这是有用的。
以上都是理论。我们来看一个例子,是VC++ 6.0控制台项目。设置一个控制台项目,选择空的项目,设置一个C++文件。只需复制以下代码。
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * zaodt_ms@hotmail.com宝宝
/
//11月21日, 2007年
/
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * *。

#define _WIN32_WINNT 0x0500 //编译时没有此差异

#包括
#包括

DWORD回调copy progress(
LARGE _ INTEGER total filesize,//总文件大小,以字节为单位
LARGE _ INTEGER totalbytestransfered,//传输的总字节数
LARGE _ INTEGER stream StreamSize,//此流传输的总字节数
DWORD dwStreamNumber,//当前流
DWORD dwCallbackReason,//回调原因
句柄...{
static int nRecord = 0;
nrecord++;
printf("回拨次数:%d已传输:x: x文件大小:x: x ",
nrecord,
total bytes transferred . high part,
total bytes transferred . low part,
TotalFileSize。HighPart,
TotalFileSize。low part);

返回进度_继续;
}


int main(int argc,char* argv[])
...{
if(argc!=3)
...{
printf("用法:命令源文件目标文件");
返回0;
}

如果(!CopyFileEx(argv[1],argv[2],(LP progress _ ROUTINE)COPY progress,NULL,FALSE,COPY _ FILE _ FAIL _ IF _ EXISTS))
...{
printf("CopyFileEx()失败。");
返回0;
}

返回0;
}

结果:
回调数:1已传输:0000000: 000000文件大小:000000: 00F60964
回调数:2已传输:000000: 0010000文件大小:00000: 0000。回调数:3已传输:0000000: 00020000文件大小:000000: 00F60964
回调数:4已传输:000000: 0030000文件大小:00000: 00F60964
回调数:5已传输:00000000:00000:00040000文件大小:00000: 00F60

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » CopyFileEx函数的使用方法

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情