IT정보공유/C#

C# 타이머를 이용한 오래된 파일 삭제 (로그 삭제)

알지오™ 2020. 1. 23.

특정 디렉토리에 있는 파일중에 생성된 날짜를 검색하여 일정기간이 지난 파일들을 삭제하는 함수입니다.

일자별로 쌓이는 로그파일이나 특정 목적때문에 생기는 임시파일들을 주기적으로 삭제할 필요가 있을때 사용합니다.

 

타이머를 이용한 주기적인 파일 삭제


타이머 주기는 1시간이든 2시간이든 1일이든 필요한 만큼 tmDeleteOldFile 타이머의 Interval을 지정해줍니다.

 

//타이머 이벤트
private void tmDeleteOldFile_Tick(object sender, EventArgs e)
{
	tmDeleteOldFile.Enabled = false; //타이머 비활성화

	try
	{
		//FolderName 이라는 폴더에 7일이전에 생성된 파일은 삭제한다.
		deleteOldFiles("FolderName", DateTime.Now.AddDays(-7).ToString("yyyyMMdd"));
	}
	catch(Exception ex)
	{
		Log.LogExp(ex);
	}
	
	tmDeleteOldFile.Enabled = true; //타이머 활성화
}

 

기준 날짜보다 이전 생성된 파일 삭제

 

실제 파일 삭제 함수인 deleteOldFiles 에서는 디렉토리 경로와 삭제대상이 되는 기준 날짜를

yyyyMMdd 형태로 파라미터를 전달 받습니다.

그리고 DirectoryInfo.GetFiles() 함수를 이용해 해당 디렉토리안에 있는 파일목록을 읽어 파일 생성날짜를 비교하여

생성일자가 7일전이면 파일을 삭제합니다.

 

//파일삭제 함수
public void deleteOldFiles(String dirPath, String strDate)
{
	DirectoryInfo dirInfo = new DirectoryInfo(dirPath);
	DateTime fileCreatedTime;
	DateTime cmpTime = DateTime.ParseExact(strDate, "yyyyMMdd", null);
	
	foreach (FileInfo file in dirInfo.GetFiles())
	{
		fileCreatedTime = file.CreationTime;


		//파일생성날짜가 strDate보다 이전이면 파일을 삭제한다. 예제에서는 7일전이면 삭제
		if (DateTime.Compare(fileCreatedTime, cmpTime) > 0) 
		{
			File.Delete(file.FullName);
		}

	}

}

 

댓글

💲 추천 글