复制文件夹下同一类型文件(CopyFile)

     此例实现将一个文件夹下的txt文件复制到目标文件夹。方法是遍历源文件夹,如果是txt文件,则进行拷贝。

 

int CTestCSDNDlg::CopyFileEx( CString strSrcPath, CString strExt, CString strDesPath )

{

     CFileFind ff;

     CString szDir = strSrcPath;

     CString strSize = _T("");

 

     if(szDir.Right(1) != "//")

         szDir += "//";

    

     szDir += "*.*";

    

     BOOL res = ff.FindFile(szDir);

     while(res)

     {

         res = ff.FindNextFile();

         if(ff.IsDirectory() && !ff.IsDots()) // 文件夹

         {

              CString strFolderPath = ff.GetFilePath();

              CopyFileEx(strFolderPath, strExt, strDesPath);

         }

         else if(!ff.IsDirectory() && !ff.IsDots())     // 文件

         {

              // 判断扩展名

              CString strFileName = ff.GetFileName();

              int nPos;

              nPos = strFileName.ReverseFind( _T( '.' ) );

              CString strFileExt;

              strFileExt = strFileName.Right( strFileName.GetLength() - nPos - 1 );

              if ( strFileExt == strExt )

              {

                   // 复制文件

                   CString strFilePath;

                   strFilePath = ff.GetFilePath();

                   CString strNewFilePath;

                   strNewFilePath = strDesPath + _T( "//" ) + strFileName;

                   ::CopyFile( strFilePath, strNewFilePath, FALSE );

              }

         }

     }

     ff.Close();

 

     return 0;

}


使用方法:
CopyFileEx( _T( "E://test" ), _T( "txt" ), _T( "E://test 2" ) );
第一个参数:源路径
第二个参数:扩展名
第三个参数:目的路径

 

如果拷贝包括子文件夹,则使用下面的方法:

修改此段代码:

if(ff.IsDirectory() && !ff.IsDots()) // 文件夹 

CString strFolderPath = ff.GetFilePath(); 
CString strFolderName = ff.GetFileName(); 
CString strDestSubFolder = strDesPath + _T( "//" ) + strFolderName; 
CreateDirectory( strDestSubFolder, NULL ); 
CopyFileEx(strFolderPath, strExt, strDestSubFolder ); 

你可能感兴趣的:(null,扩展)