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, 0sizeof(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




+ Recent posts