MFC利用CFileFind 类实现文件夹的复制

本文详细介绍了使用MFC中的CFileFind类实现文件夹复制的过程,并解释了路径与文件名的区别,通过递归方式创建目录及复制文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现文件复制过程时,一个问题i是我纠结了许久,CFileFind 类的成员函数 GetFilePath()与GetFileName(),其实很好理解的两个函数,一个是获得文件的路径,一个是获得文件的名字。但我却在理解上犯了一个错误,就是文件路径究竟包不包含文件名字,如有文件C:/Test/1.txt ,那么它的路径和名称分别是什么?我理解成了,路径:C:/Test 名称1.txt ,我按照我的理解编写这个复制功能的实现代码,老师出错,最后我才发现,原来 路径是包含文件名称的 ,即上面的文件 路径即是:C:/Test/1.txt。

 

      似乎是个很低级的错误,但是的确困扰了我一段时间。

 

      回到正题。

 

     具体的实现思想类似于上一篇博文“MFC 中 删除一个非空文件夹”

 

    请看源代码: 

[cpp]  view plain copy
  1. void myCopyDirectory(CString source, CString target)  
  2. {  
  3.     CreateDirectory(target,NULL); //创建目标文件夹  
  4.     //AfxMessageBox("创建文件夹"+target);  
  5.     CFileFind finder;  
  6.     CString path;  
  7.         path.Format("%s/*.*",source);  
  8.     AfxMessageBox(path);  
  9.     bool bWorking = finder.FindFile(path);  
  10.     while(bWorking){  
  11.         bWorking = finder.FindNextFile();  
  12.         AfxMessageBox(finder.GetFileName());  
  13.         if(finder.IsDirectory() && !finder.IsDots()){ //是文件夹 而且 名称不含 . 或 ..  
  14.             myCopyDirectory(finder.GetFilePath(),target+"/"+finder.GetFileName()); //递归创建文件夹+"/"+finder.GetFileName()  
  15.         }  
  16.         else//是文件 则直接复制  
  17.             //AfxMessageBox("复制文件"+finder.GetFilePath());//+finder.GetFileName()  
  18.             CopyFile(finder.GetFilePath(),target+"/"+finder.GetFileName(),FALSE);  
  19.         }  
  20.     }  
  21. }  

 转自:http://blog.youkuaiyun.com/jarvischu/article/details/5784875

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值