폴더에서 특정 확장자를 가진 파일 찾기


92

폴더 경로 (예 :)가 주어지면 C:\Random Folder어떻게 특정 확장자를 가진 파일을 찾을 수 txt있습니까? *.txt디렉토리에서 검색해야한다고 가정 하지만 처음에이 검색을 어떻게 시작해야하는지 잘 모르겠습니다.

답변:


177

System.IO.Directory클래스와 정적 메서드를 살펴보십시오 GetFiles. 경로 및 검색 패턴을 허용하는 과부하가 있습니다. 예:

 string[] files = System.IO.Directory.GetFiles(path, "*.txt");

감사! 모든 대답은 좋은,하지만 당신은 : 그래 ... 처음으로 이렇게 대답
도미닉 K에게

6
확장자가 txt_와 같은 경우에는 작동하지 않습니다. 폴더에 * .exe 파일이 있는지 확인하려고하는데 * .exe_ 파일이 하나만 있지만 쿼리에서 잘못된 파일을 반환합니다.
Adrian


내가이 같은 이름이있어 하나의 파일을 원하는 경우macos.txt
Prashant Pimpale

확장자가없는 모든 파일을 찾고 싶습니다. 파일 유형이 "file"(확장자 없음) 인 파일이 있습니다. 해당 파일을 어떻게 찾을 수 있습니까?
sohaiby


14

사실 꽤 쉽습니다. System.IO.Directory와 함께 클래스를 사용할 수 있습니다 System.IO.Path. 다음과 같은 것 (LINQ를 사용하면 더욱 쉬워집니다) :

var allFilenames = Directory.EnumerateFiles(path).Select(p => Path.GetFileName(p));

// Get all filenames that have a .txt extension, excluding the extension
var candidates = allFilenames.Where(fn => Path.GetExtension(fn) == ".txt")
                             .Select(fn => Path.GetFileNameWithoutExtension(fn));

물론이 기술에도 많은 변형이 있습니다. 필터가 더 간단하면 다른 답변 중 일부가 더 간단합니다. 이것은 지연된 열거 (중요한 경우)와 더 많은 코드를 희생시키면서 더 유연한 필터링의 이점을 가지고 있습니다.


추가 작업을 해주셔서 감사합니다. 그러나 디렉토리에 텍스트 파일이 하나만 있기 때문에 간단한 진술을 할 것입니다 (내 프로그램에서 추출했습니다).
Dominic K

3

아래 메소드는 특정 확장자를 가진 파일 만 반환합니다 (예 : .txt1이 아닌 .txt 파일).

public static IEnumerable<string> GetFilesByExtension(string directoryPath, string extension, SearchOption searchOption)
    {
        return
            Directory.EnumerateFiles(directoryPath, "*" + extension, searchOption)
                .Where(x => string.Equals(Path.GetExtension(x), extension, StringComparison.InvariantCultureIgnoreCase));
    }

1

내 이해에 따라 이것은 두 가지 방법으로 수행 할 수 있습니다.

1) Getfiles 메소드와 함께 디렉토리 클래스를 사용하고 모든 파일을 탐색하여 필요한 확장자를 확인할 수 있습니다.

Directory.GetFiles ( "your_folder_path) [i] .Contains ("*. txt ")

2) 파일 경로를 매개 변수로 사용하고 확장자를 확인하는 GetExtension Method와 함께 Path Class를 사용할 수 있습니다.

Path.GetExtension (your_file_path) .Equals ( ". json")

참고 : 두 논리 모두 루핑 조건 내에 있어야합니다.


-1

모든 유형의 확장 파일이있는 읽기 파일에이 코드를 사용하십시오.

string[] sDirectoryInfo = Directory.GetFiles(SourcePath, "*.*");
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.