您的位置:首页 > 其它

利用windows api实现文件拷贝

2013-12-12 13:18 267 查看
程序类型:Console

参数:源文件名 目的文件名

要求:

1.只能使用Windows API函数(CreateFile/ReadFile/WriteFile/CloseHandle)完成

注意点:

这里面涉及unicode和ansi编码问题,因为vs初始设置为unicode,所以你输入字符串时要转为wchar

有以下方法可以参考:

1.把字符编码方式修改为未设置,或者ansi

2.L"string",加L

#include<Windows.h>
#include<stdio.h>
int main(int argc,TCHAR* argv[]){
if(argc!=3){
return 0;
}
HANDLE handlesrc;
//const char* srcfile=argv[0];
handlesrc=CreateFile(argv[1],
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_TEMPORARY,
0);
if(handlesrc==INVALID_HANDLE_VALUE){
printf("文件无法打开\n");
return 0;
}
HANDLE handledst;
handledst=CreateFile(argv[2],
GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL,
CREATE_NEW,
FILE_ATTRIBUTE_TEMPORARY,
0);
if(handledst==INVALID_HANDLE_VALUE){
printf("文件已存在\n");
return 0;
}
DWORD size=GetFileSize(handlesrc,NULL);
char* buff=new char[size+1];
DWORD dwRead=0,dwWrite;
ReadFile(handlesrc,buff,size,&dwRead,NULL);
buff[size]=0;
WriteFile(handledst,buff,size,&dwWrite,NULL);

delete[] buff;
CloseHandle(handledst);
CloseHandle(handlesrc);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: