利用windows api实现文件拷贝
程序类型: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); }
浙公网安备 33010602011771号