티스토리 뷰

목차

    C# 파일 크기 0은 읽지 않기, FileInfo linq query


    파일을 가져와 C# FileInfo 배열에 담을 때, 크기가 0인 것은 제외하는 방법입니다.


    C# Linq Query를 사용하면 간단하게 처리할 수 있어서 좋네요. 아래는 예제입니다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    string path = @"C:\\";
     
    if (Directory.Exists(Path.GetDirectoryName(path)) == false)
        return;
     
    FileInfo[] files = new DirectoryInfo(path).GetFiles("*.txt");
     
    var query = from FileInfo info in files where info.Length > 0 select info;
     
    FileInfo[] all_files = query.ToArray();
    cs


    2번 라인에서 폴더가 유효한지 먼저 검사합니다.


    C# 파일 크기 0은 읽지 않기, FileInfo linq query[씨샵, 링크 쿼리 응용 예제]


    6번 라인에서 원하는 확장자의 모든 파일 정보를 일단 files란 배열에 저장합니다.




    8번 라인에서 C# Linq 쿼리를 작성합니다. FileInfo를 조회하기 위해 info란 내부 객체를 생성하고 files 요소를 순차적으로 대입합니다. 뒤에 where 조건문을 붙여 파일의 사이즈(FileInfo.Length)가 0 보다 크다면 해당 요소를 select합니다.


    결과를 저장한 query를 ToArray() 함수를 이용해 all_files에 저장합니다. 결과적으로 몇 개의 파일이 있든, 크기가 0이라면 모두 제외됩니다.


    C# Linq Query에는 remove, delete 등의 키워드가 별도로 없으니, where 조건문을 사용해야 합니다.


    추가로, 파일을 크기별로 정리하고 싶다면 아래 쿼리를 사용하세요.


    1
    var query = from FileInfo info in files orderby info.Length descending select info;
    cs


    C# 파일 크기 0은 읽지 않기, FileInfo linq query