使用readfile 和 writefile 复制文件

来源:互联网 发布:淘宝账户登录不上去 编辑:程序博客网 时间:2024/05/08 08:20
int main(int argc,char * argv[])
{   
    //文件信息
    HANDLE hFile;
    hFile = ::CreateFile("c://快记.txt", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    if(INVALID_HANDLE_VALUE == hFile)
    {
        cout << "需要发送的文件不存在" << endl;
        return 0;
    }
    //存放到内存中
    DWORD dwLen = GetFileSize(hFile, NULL);
    char *readBuf = new char[dwLen + 1];
    memset(readBuf, 0, dwLen+1);
    DWORD dwReadLen;
    //将文件内容存放到 readBuf 中。然后将 readBuf 中的内容发送给客户端
    ReadFile(hFile, readBuf, dwLen + 1, &dwReadLen, NULL);
    int iCount = 0;
    HANDLE hFile1 = ::CreateFile("c://hh.txt", GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    while (dwLen > DATA_BUFSIZE)
    {
        char *pBuf = new char[DATA_BUFSIZE+1];
        memset(pBuf, 0, DATA_BUFSIZE+1);
        MoveMemory(pBuf, readBuf+iCount*DATA_BUFSIZE, DATA_BUFSIZE);
        DWORD dwWritenSize;
        WriteFile(hFile1, pBuf, DATA_BUFSIZE, &dwWritenSize, NULL);
        iCount++;
        dwLen -= DATA_BUFSIZE;
    }
    char *pBuf = new char[dwLen+1];
    memset(pBuf, 0, dwLen+1);
    MoveMemory(pBuf, readBuf+iCount*DATA_BUFSIZE, dwLen);
    DWORD dwWritenSize;
    WriteFile(hFile1, pBuf, dwLen, &dwWritenSize, NULL);
    delete pBuf;
    return 0;
}


以上代码,将 C盘下 “快记.txt” 复制成另外一个文件 “hh.txt”
原创粉丝点击