复制文件夹下同一类型文件(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 ); 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值