본문 바로가기
C++

SetFileTime - 파일 시간 변경

by 파제르 2023. 2. 3.
반응형

HANDLE writeHandle;
SYSTEMTIME st;
CTime ct = CTime::GetCurrentTime();		
// 현재시간을 구함. - CTime::GetCurrentTime() 
FILETIME cTime;

if ((writeHandle = CreateFile(strEventFile, FILE_WRITE_ATTRIBUTES, 
	FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL)) 
    == INVALID_HANDLE_VALUE)
{
    puts("CreateFile 에러");
}

ct += CTimeSpan(0,0,-25000,0);		
// 시간을 ± 함. CTimeSpan(일,시,분,초)
// -25,000분 

st.wYear	= ct.GetYear();
st.wMonth	= ct.GetMonth();
st.wDay		= ct.GetDay();
st.wHour	= ct.GetHour();
st.wMinute	= ct.GetMinute();
st.wSecond	= ct.GetSecond();
st.wDayOfWeek = 0;
st.wMilliseconds = 0;

SystemTimeToFileTime(&st, &cTime);		
// 시스템 시간을 파일 시간 형식으로 변환. 
// UTC를 기준으로 한국은 UTC+9.
// 때문에 ct설정 시간에서 9시간이 +가 됨.

LocalFileTimeToFileTime(&cTime, &cTime);	
// 파일 시간을 UTC를 기반으로 하는 파일 시간으로 변환
// SystemTimeToFileTime으로 +9를 ct설정 시간으로 맞춰 줌.

if (SetFileTime(writeHandle, &cTime, &cTime, &cTime) == FALSE)	// 파일 시간 변경.
{
    puts("SetFileTime 에러");
}

CloseHandle(writeHandle);

파일의 속성을 보면

만든 날짜, 수정한 날짜, 액세스한 날짜가 있다.

해당 날짜를 수정하려면 SetFileTime을 사용한다.

 

728x90
반응형