티스토리 뷰
목차
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번 라인에서 폴더가 유효한지 먼저 검사합니다.
[씨샵, 링크 쿼리 응용 예제]
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