본문 바로가기
C++ 200제/코딩 IT 정보

C# Linq 예제, FileInfo 오래된 파일 10개 삭제 (File.Delete)

by vicddory 2018. 3. 12.

C# Linq 예제, FileInfo 오래된 파일 10개 삭제 (File.Delete)


C# 링크로 간단하게 처리하는 방법 알아보겠습니다.


순서는 이렇습니다.


1. FileInfo[]를 이용해 파일 리스트를 얻음

2. LINQ, OrderBy를 이용해 가장 오래된 10개 목록을 추려냄

3. 오래된 파일 10개 삭제


아래는 C# LINQ 예제 소스입니다.


1
2
3
4
5
6
7
8
9
10
11
12
FileInfo[] files = new DirectoryInfo(@"D:\Test\").GetFiles("*.txt");
            
if (files.Length != 0)
{
    FileInfo[] last_ten = files.OrderBy(fi => fi.LastWriteTime).Take(10).ToArray();
 
    foreach (FileInfo fi in last_ten)
    {
        Console.WriteLine(fi.LastWriteTime);
        File.Delete(fi.FullName);
    }
}
cs


1번 라인에서 파일 리스트를 얻어옵니다. 위와 같이 꾸밀 경우 확장자 txt만 가져오게 됩니다. 이 리스트가 오래된 파일 10개를 추려낼 전체 리스트가 됩니다.


5번 라인. OrderBy를 호출하여 FileInfo[]에 담긴 파일들의 마지막 생성일자를 조회합니다. 그리고 가장 오래된 10개 항목만 따로 저장합니다. (Take(10).ToArray())


7번 라인은 간단한 foreach문입니다. 날짜를 출력하고 해당 파일을 삭제합니다.


C# Linq 예제, FileInfo 오래된 파일 10개 삭제 (File.Delete)[C# LINQ 예제, 오래된 파일 삭제]


하지만, 처음부터 가장 오래된 파일 10개만 필요했다면, 아래처럼 축약해도 됩니다.


1
2
3
4
5
FileInfo[] files = new DirectoryInfo(@"C:\test\").
    GetFiles("*.rs2").
    OrderBy(fi => fi.LastWriteTime).
    Take(10).
    ToArray();
cs


이렇게 LINQ를 바로 이용하면 소스가 더 간편해지네요.


<< 관련 글 >>


C# List RemoveAll 기능, 항목 삭제 편리하게 (람다 응용) [링크]

[Qt 프로그래밍] 자동 파일 삭제 프로그램 (C++) [링크]


C# Linq 예제, FileInfo 오래된 파일 10개 삭제 (File.Delete)

댓글