资源简介

封装CopyFileExe成为一个类,提供简单的同步、异步调用文件复制、暂停、恢复、取消复制,自动计算速度和进度,回调给调用者。

资源截图

代码片段和文件信息

// FileCopy.cpp: implementation of the CFileCopy class.
//
//////////////////////////////////////////////////////////////////////

#include “stdafx.h“
#include “FileCopyDemo.h“
#include “FileCopy.h“

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

#include 
#include 
#include 

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

class CAutoLock  
{  
private:  
    LPCRITICAL_SECTION m_pcsLcok;  
    
public:  
    CAutoLock(LPCRITICAL_SECTION pcsLcok)  
    {  
        m_pcsLcok = pcsLcok;  
        if (m_pcsLcok)  
        {  
            EnterCriticalSection(m_pcsLcok);  
        }  
    }  
    
    ~CAutoLock()  
    {  
        if (m_pcsLcok)  
        {  
            LeaveCriticalSection(m_pcsLcok);  
            m_pcsLcok = NULL;  
        }  
    }  
};  

class CStopwatch
{
public:
CStopwatch()
{
QueryPerformanceFrequency(&m_liPerfFreq);
Start();
}

void Start()
{
QueryPerformanceCounter(&m_liPerfStart);
}

__int64 Now() const
{
LARGE_INTEGER liPerfNow;
QueryPerformanceCounter(&liPerfNow);

return (liPerfNow.QuadPart - m_liPerfStart.QuadPart) * 1000 / m_liPerfFreq.QuadPart;
}

__int64 NowInMicro() const
{
LARGE_INTEGER liPerfNow;
QueryPerformanceCounter(&liPerfNow);

return (liPerfNow.QuadPart - m_liPerfStart.QuadPart) * 1000000 / m_liPerfFreq.QuadPart;
}
private:
LARGE_INTEGER m_liPerfFreq; //counter per second
LARGE_INTEGER m_liPerfStart; //starting count
};

CFileCopy::CFileCopy()
{
    m_bCancel = FALSE;
    m_dw64TotalFileSize = 0;
    m_dw64TotalBytesTransferred = 0;
    m_bIsCoping = FALSE;
    m_hPauseEvent = NULL;
m_hFeedbackExitEvent = NULL;
    m_hAsyncCopyThreadHandle = NULL;
m_hFeedbackProgressThreadHandle = NULL;
    m_pUserData = NULL;
    m_pAsyncCopyResultCB = NULL;
m_pCopingProgressCB = NULL;
m_dwProgressFeedbackTime = 0;
    InitializeCriticalSection(&m_csLock);
}

CFileCopy::~CFileCopy()
{
    Cancel();
    DeleteCriticalSection(&m_csLock);
}

BOOL CFileCopy::CopyFile(IN LPCTSTR lpSrcFileName
                         IN LPCTSTR lpDesFileName
                         IN const BOOL bSynchronousCopy
 IN const DWORD dwProgressFeedbackTime
 OUT DOUBLE &dbSpeed
                         OUT tstring &strErrorMsg)
{
    {  
        CAutoLock autolock(&m_csLock);  
        if (m_bIsCoping)  
        {  
            strErrorMsg = _T(“In coping.“);  
            return FALSE;  
        }  
        m_bIsCoping = TRUE;  
    }  

    // 同步复制
    if (bSynchronousCopy)
    {
m_dwProgressFeedbackTime = dwProgressFeedbackTime;
        BOOL bRet = SynchronousCopyFile(
lpSrcFileName 
lpDesFileName 
dwProgressFeedbackTime 
dbSpeed 
st

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      10251  2014-06-16 14:39  FileCopyDemo\FileCopy.cpp

     文件       4453  2014-06-16 13:14  FileCopyDemo\FileCopy.h

     文件       1779  2014-06-16 10:21  FileCopyDemo\FileCopyDemo.clw

     文件       2147  2014-06-12 11:16  FileCopyDemo\FileCopyDemo.cpp

     文件       4584  2014-06-16 15:29  FileCopyDemo\FileCopyDemo.dsp

     文件        549  2014-06-12 11:16  FileCopyDemo\FileCopyDemo.dsw

     文件       1390  2014-06-12 11:16  FileCopyDemo\FileCopyDemo.h

     文件       6348  2014-06-16 10:23  FileCopyDemo\FileCopyDemo.rc

     文件      11275  2014-06-16 15:28  FileCopyDemo\FileCopyDemoDlg.cpp

     文件       1860  2014-06-16 15:28  FileCopyDemo\FileCopyDemoDlg.h

     文件       3687  2014-06-12 11:16  FileCopyDemo\ReadMe.txt

     文件       1196  2014-06-16 10:23  FileCopyDemo\resource.h

     文件        214  2014-06-12 11:16  FileCopyDemo\StdAfx.cpp

     文件       1086  2014-06-12 15:17  FileCopyDemo\StdAfx.h

     文件       1078  2014-06-12 11:16  FileCopyDemo\res\FileCopyDemo.ico

     文件        404  2014-06-12 11:16  FileCopyDemo\res\FileCopyDemo.rc2

     文件     139327  2014-06-16 15:28  FileCopyDemo\Debug\FileCopyDemo.exe

     文件     517120  2014-06-16 15:28  FileCopyDemo\Debug\FileCopyDemo.pdb

     目录          0  2014-06-23 10:27  FileCopyDemo\res

     目录          0  2014-06-23 10:27  FileCopyDemo\Debug

     目录          0  2014-06-23 10:27  FileCopyDemo

----------- ---------  ---------- -----  ----

               708748                    21


评论

共有 条评论