카테고리

  • 안드로이드
  • IOS
  • MFC
  • JAVA
  • AWS
  • LAMP
  • 여행&사진
  • 이런저런생활
  • 2015년 11월 13일 금요일

    MFC 폴더 복사 및 파일 복사

    SHFileOperation 함수를 이용하여 디렉토리를 복사 할 수 있도록 하려고 했지만 SHFileOperation함수는 Vista이전 버젼에서만 가능!!


    IFileOperation을 이용하라고 해서 해보려 했지만 생각보다 사용 방법이 너무 어려움.
    따라서!
    그냥 내가 만듬

    //** Parameter defPath : 복사 대상, copyTo : 복사할 장소
    //** defPath = C:\GRTMDB\0011 <-폴더 및 파일이 있음
    //** copyTo = C:\GRTMDB\0012 <-0012폴더부터 생성할 예정
    void CMDBAGDlg::CopyModelDB(CString defPath, CString copyTo)
    {
      CFileFind cFileFinder;
      bol bResult;
      bResult = cFileFinder.FindFile(defPath + _T("*.*"));

      while(bResult) {
        bResult = cFileFinder.FindNextFile();
        CString fName = cFileFinder.GetFileName();

        if(fName.Compare(_T(".")) == 0 ||
            fName.Compare(_T("..")) == 0 ||
            fName.Compare(_T("Thumbs.db")) == 0) continue;

        if(cFileFinder.IsDirectory() == true) {
          CreateDirectory(copyTo + _T("\\") + fName, NULL);
          //** 재귀함수를 통해 하위 폴더 확인
          CopyModelDB(defPath + _T("\\") + fName, copyTo + _T("\\") + fName);
        } else if(cFileFinder.IsArchived()) {
          //** 파일복사
          ::CopyFile(defPath + _T("\\") + fName, copyTo + _T("\\") + fName, FALSE);
        }
      }
    }

    댓글 7개 :

    1. void CopyModelDB(CString defPath, CString copyTo)
      {
      CFileFind cFileFinder;
      CString fName;
      bool bRlt = cFileFinder.FindFile(defPath + "*.*");
      while(bRlt) {
      bRlt = cFileFinder.FindNextFile();
      if(cFileFinder.IsDots()) continue;

      fName = cFileFinder.GetFileName();
      if(cFileFinder.IsDirectory()) {
      CreateDirectory(copyTo + "\\" + fName, NULL);
      CopyModelDB(defPath + "\\" + fName, copyTo + "\\" + fName); // 하위 폴더 확인
      } else if(cFileFinder.IsArchived()) // 파일복사
      ::CopyFile(defPath + "\\" + fName, copyTo + "\\" + fName, FALSE);
      }
      cFileFinder.Close();
      }

      답글삭제
    2. 작성자가 댓글을 삭제했습니다.

      답글삭제
    3. 작성자가 댓글을 삭제했습니다.

      답글삭제
    4. 작성자가 댓글을 삭제했습니다.

      답글삭제
    5. CopyModelDB 함수 내용코드는 없나요?

      답글삭제