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);
}
}
}