1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | void OldDeleteLog() { // 경로 + 형식을 통하여 폴더 내 해당 파일들을 추출하기 위한 변수 string path = savePath + "*.log"; // 핸들을 통하여 path에 해당하는지 검사 _finddata_t fd; intptr_t handle = _findfirst(path.c_str(), &fd); // 파일이 없다. if (-1 == handle) return; int result = 0; // 경로를 통해 파일 이름을 가져온다. do { int year = 0, month = 0, day = 0; char *pt1 = nullptr, *pt2 = nullptr, temp[16] = { 0 }; char yearCopy[4] = { 0 }, monthCopy[2] = { 0 }, dayCopy[2] = { 0 }; // 파일이름에서 20으로 시작하는 부분(연도)을 가르킨다. pt1 = strstr(fd.name, "20"); pt2 = strstr(fd.name, ".log"); // 파일 포맷에서 날짜 추출 X_X_yyyy-mm-dd.log에서 "yyyy-mm-dd"를 추출한다. // 20으로 시작하는 부분을 copy하고 .log로 시작하는 부분을 자른다. // 현재 "yyyy-mm-dd" 상태 memcpy(temp, pt1, 10); memcpy(yearCopy, &temp, 4); memcpy(monthCopy, &temp[5], 2); memcpy(dayCopy, &temp[8], 2); // 날짜를 문자열 -> 정수로 변환 year = atoi(yearCopy); month = atoi(monthCopy); day = atoi(dayCopy); // tm_st = 뺄 기준이 되는 날짜 변수 ( 현재 날짜 ) // tm_nd = 뺄 날짜 ( 파일 날짜 ) time_t tm_st, tm_nd; struct tm fileDay; memset(&fileDay, 0, sizeof(tm)); // 년도는 1900년부터 시작, 월은 0부터 시작이기에 // 년도 - 1900 / 월 - 1 fileDay.tm_year = year - 1900; fileDay.tm_mon = month - 1 ; fileDay.tm_mday = day; tm_st = mktime(&fileDay); time(&tm_nd); // 날짜 차이를 구하고 tm_day에 일수를 set double d_diff = difftime(tm_nd, tm_st); int tm_day = static_cast<int>(d_diff / (60 * 60 * 24)); // 날짜의 차이가 save_day와 같거나 크면 // 해당 경로의 Log 파일을 삭제 if (tm_day >= save_day) { // 경로 + 파일 이름 지우기 char deleteFilePath[100]; ZeroMemory(deleteFilePath, sizeof(deleteFilePath)); strcat_s(deleteFilePath, sizeof(deleteFilePath), savePath.c_str() ); strcat_s(deleteFilePath, sizeof(deleteFilePath), fd.name ); // 해당 경로의 파일 지우기 remove( deleteFilePath ); } // 해당 날짜 - saveDay가 크면 해당 파일 삭제. result = _findnext(handle, &fd); } while (-1 != result); _findclose(handle); } | cs |
'프로그래밍 > C#' 카테고리의 다른 글
델리게이트(delegate)와 이벤트(event) (0) | 2019.03.21 |
---|---|
WPF DLL 생성 및 Mainwindow에서 ChildWindow로 창 전환 (0) | 2019.02.26 |
WPF 속성 창이 화면에 나타나지 않을 때 (0) | 2019.02.25 |
섀도잉과 하이딩 (0) | 2019.01.14 |
WPF 모든 버튼 컨트롤을 탐색하는 방법 (0) | 2019.01.14 |