zoukankan      html  css  js  c++  java
  • C++复制文件(使用WindowsAPI)

    bool TForm1::CopyFile2() {
        AnsiString srcPath = ExtractFilePath(Application->ExeName) + "Windows.pdf";
        AnsiString destPath = ExtractFilePath(Application->ExeName) + "dest.pdf";

        HANDLE hSrcFile, hDestFile;
        hSrcFile = CreateFile(srcPath.c_str(),     // open MYFILE.TXT
                  GENERIC_READ,              // open for reading
                  FILE_SHARE_READ,           // share for reading
                  NULL,                      // no security
                  OPEN_EXISTING,             // existing file only
                  FILE_ATTRIBUTE_NORMAL,     // normal file
                  NULL);                     // no attr. template
        if (hSrcFile == INVALID_HANDLE_VALUE)
            return false;

        hDestFile = CreateFile(destPath.c_str(),           // create MYFILE.TXT
                 GENERIC_WRITE ,                // open for writing
                 0,                            // do not share
                 NULL,                         // no security
                 CREATE_ALWAYS,                // overwrite existing
                 FILE_ATTRIBUTE_NORMAL,       // normal file
                 NULL);
        if (hDestFile == INVALID_HANDLE_VALUE)
            return false;
        char* buffer = new char[1024];

        ULONG lpNumberOfBytesRead, lpNumberOfBytesWritten;
        DWORD fileSize, offset = 0;
        fileSize = GetFileSize(hSrcFile, NULL);
        if (fileSize == INVALID_FILE_SIZE)
            return false;
        while (offset < fileSize) {
            BOOL bFlag = ReadFile(hSrcFile, buffer, 1024, &lpNumberOfBytesRead, NULL);
            if (!bFlag) {
                return false;
            }
            WriteFile(hDestFile, buffer, 1024, &lpNumberOfBytesWritten, NULL);
            offset += 1024;
        }
        CloseHandle(hSrcFile);
        CloseHandle(hDestFile);
        delete[] buffer;
        return true;
    }

  • 相关阅读:
    Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示
    总结软连接和硬连接区别,并用实例操作说明
    描述文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息?
    Git Shell push_code 脚本
    YDD的铁皮锅——C/C++内存概念
    Linux Shell 常见用法及问题
    MFC 设置鼠标样式(SetSystemCursor函数问题)
    Qt QTableView自定义列表(插入图片)
    Github libinjection库研究总结
    Windows/Linux:VMware虚拟机用内网IP通讯
  • 原文地址:https://www.cnblogs.com/yuanxiaoping_21cn_com/p/1332701.html
Copyright © 2011-2022 走看看