티스토리 뷰
목차
반응형
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 예제, 오래된 파일 삭제]
하지만, 처음부터 가장 오래된 파일 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)
반응형