티스토리 뷰

목차

    반응형

    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)

    반응형