728x90
string logPathFolder = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
+ @"\Test" + @"\Log"; //파일 생성 경로
string deleteLogPathFolder = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
+ @"\Test" + @"\Log"; //파일 생성 경로
private void button2_Click(object sender, EventArgs e)
{
//폴더 설정 사이즈에 맞춰서 삭제, 10Mbyte 까지 삭제
deleteDirSize(deleteLogPathFolder, 10000000);
}
private void button3_Click(object sender, EventArgs e)
{
//폴더 설정 기간에 맞춰서 삭제, 오늘기준 150일 이후 파일 삭제
deleteOldFiles(deleteLogPathFolder, DateTime.Now.AddDays(-150).ToString("yyyyMMdd"));
}
//폴더 사이즈 확인
public long getDirByteSize(string path)
{
long size = 0;
DirectoryInfo dirInfo = new DirectoryInfo(path);
foreach (FileInfo fi in dirInfo.GetFiles("*", SearchOption.AllDirectories))
{
size += fi.Length;
}
return size;
}
//폴더 설정 사이즈에 맞춰서 삭제
public void deleteDirSize(String dirPath, int dirSIze)
{
//정해진 폴더 사이즈 될때까지 반복
while(getDirByteSize(dirPath) >= dirSIze)
{
//FileInfo[]를 이용해 파일 txt 확장자 리스트를 얻음
FileInfo[] files = new DirectoryInfo(dirPath).GetFiles("*.txt");
if (files.Length != 0)
{
//LINQ, OrderBy를 이용해 가장 오래된 목록을 추려냄 - 1개
FileInfo[] last_ten = files.OrderBy(fi => fi.LastWriteTime).Take(1).ToArray();
//오래된 파일 삭제
foreach (FileInfo fi in last_ten)
{
Debug.WriteLine(fi.LastWriteTime);
File.Delete(fi.FullName);
}
}
}
}
//폴더 설정 기간에 맞춰서 삭제
public void deleteOldFiles(String dirPath, String strDate)
{
DirectoryInfo dirInfo = new DirectoryInfo(dirPath);
DateTime fileCompareTime;
DateTime compareTime = DateTime.ParseExact(strDate, "yyyyMMdd", null);
foreach (FileInfo file in dirInfo.GetFiles("*.txt"))
{
//fileCompareTime = file.CreationTime; //생성 시간
fileCompareTime = file.LastWriteTime; //수정 시간
Debug.WriteLine(fileCompareTime);
Debug.WriteLine(compareTime);
Debug.WriteLine((DateTime.Compare(compareTime, fileCompareTime)));
//파일생성날짜가 strDate보다 이전이면 파일을 삭제한다.
if (DateTime.Compare(compareTime, fileCompareTime) > 0)
{
Debug.WriteLine($"FileDelete: {file.FullName}");
File.Delete(file.FullName);
}
}
}
참고자료
https://chashtag.tistory.com/13
https://codingcoding.tistory.com/808
https://hijuworld.tistory.com/68
728x90
'C#' 카테고리의 다른 글
C# / 날짜 지난 모든 파일 삭제 / Delete file by date (0) | 2023.06.01 |
---|---|
C# / 컴퓨터 종료 이벤트 (0) | 2023.04.11 |
C# / 요일 한글로, 한글 변환 (0) | 2023.04.04 |
C# / 지연 함수 딜레이 delay (0) | 2023.02.06 |
C# / 폼 맨 앞으로, 폼 포커스 최상위, SetForegroundWindow (0) | 2022.07.29 |