소연의_개발일지

 

 

코드

void CDBAgentDlg::checkExistenceFolder(char* Path) 

{
	char DirName[256]; // 생성할 디렉토리 이름
	char* p = Path;    // 매개변수로 받은 디렉토리
	char* q = DirName;

	while (*p)
	{
		if (('\\' == *p) || ('/' == *p)) // 디렉토리 혹은 서브 디렉터리
		{
			if (':' != *(p - 1))
			{
				CreateDirectory(DirName, NULL);
			}
		}
		*q++ = *p++;
		*q = '\0';
	}
	CreateDirectory(DirName, NULL);

}

 

사용 예시

///////////////////////////////////////
// CSV 값 가져오는 THREAD
// 경로 바꿔줘야 함(현재 테스트 상태로 C드라이브로 설정해놓음.

UINT ThreadSaveSlidingCsv(LPVOID lParam)
{
	CDBAgentDlg* pDlg = (CDBAgentDlg*)AfxGetApp()->m_pMainWnd;

	// 슬라이딩 경로 설정
	CString strPath;
	CTime time = CTime::GetCurrentTime();
	CString strYMD = time.Format(_T("%Y%m%d"));
	CString strD = time.Format(_T("%Y%m%d_%H%M%S"));

	strPath.Format("C:\\DATA\\%s\\DataBase\\Sliding\\", strYMD);  // C드라이브(테스트용)

	try
	{
		// 폴더 생성 전에 존재하는지 확인하기
		if (GetFileAttributes((LPCTSTR)strPath) == INVALID_FILE_ATTRIBUTES)
		{
			pDlg->checkExistenceFolder(strPath.GetBuffer());
			std::cout << "슬라이딩 폴더 생성함" << std::endl;
		}
		else 
		{
			std::cout << "슬라이딩 폴더가 이미 생성됨" << std::endl;
		}
		pDlg->SaveCsvFile(strPath);

	}
	catch (CFileException* e)
	{
		
		// 필요시 여기서 예외처리
		e->ReportError();
		e->Delete();
	}
	return 0;
}
profile

소연의_개발일지

@ssoyxon

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!