利用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);
    
    
}

 

 

 

posted on 2013-12-12 13:18  云在心  阅读(1167)  评论(0)    收藏  举报

导航