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);
}
}
}
잘 만들었군요 ^^
답글삭제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();
}
작성자가 댓글을 삭제했습니다.
답글삭제작성자가 댓글을 삭제했습니다.
답글삭제작성자가 댓글을 삭제했습니다.
답글삭제직접만든 함수명입니다.
답글삭제CopyModelDB 함수 내용코드는 없나요?
답글삭제