MFC文件夹的复制

时间:2024-03-24 16:29:53

编程时碰到了一个文件夹复制的问题,需要拷贝文件夹下的所有文件夹(如果有)和文件(所有类型),总结了一种用递归的方法来实现查找文件夹下的所有文件并复制,在MFC中实非常简单。具体过程为:新建一个对话框的程序,工程名为:Copyfolder,添加两个静态控件,caption改为原路径和目标路径,再添加两个与之对应的文本编辑框,修改ID,关联两个成员变量:

CString m_strSrc;//原路径

CString m_strDst;//目标路径

添加一个成员函数:

 

 
  1. void CCopyfolderDlg::CopyDirectory(CString source, CString target)

  2. {

  3. CreateDirectory(target,NULL); //获取目标拷贝的路径 拷贝至哪里

  4. CFileFind finder;

  5. CString path=source+_T("\\*.*"); //需要拷贝的文件的路径

  6. // AfxMessageBox(path); //调试用

  7. bool bWorking = finder.FindFile(path); //是否找到了需要拷贝的文件的路径

  8. while(bWorking){

  9. bWorking = finder.FindNextFile();

  10. //AfxMessageBox(finder.GetFileName()); //调试用

  11. if(finder.IsDirectory() && !finder.IsDots()){ //是不是有效的文件夹

  12. CopyDirectory(finder.GetFilePath(),target+_T("\\")+finder.GetFileName()); //递归查找文件夹

  13. }

  14. else{ //是文件则直接复制

  15. CopyFile(finder.GetFilePath(),target+_T("\\")+finder.GetFileName(),FALSE); //拷贝文件夹下的所有文件

  16. }

  17. }

  18. }

最后在给确定按钮添加消息响应函数,在这个函数中调用即可:

 

 
  1. void CCopyfolderDlg::OnBnClickedOk()

  2. {

  3. UpdateData(true);//两个路径获取值

  4. CopyDirectory(m_strSrc,m_strDst);

  5. AfxMessageBox(_T("复制成功!"));

  6. OnOK();

  7. }

生成的界面如下图所示:

MFC文件夹的复制

以上即为在MFC中实现文件夹拷贝的全过程。后续再遇到了其他的实现方法在做补充!