C#
C# / txt 파일 용량, 기간, 오래된 거 삭제하기 / file size delete, file old delete
캬옹냐옹
2023. 5. 31. 14:41
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