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

https://developer-talk.tistory.com/147

https://jinwooking.tistory.com/22

728x90

+ Recent posts