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

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



답변

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

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


답변

Directory 클래스를 사용할 수 있습니다.

 Directory.GetFiles(path, "*.txt", SearchOption.AllDirectories)


답변

사실 꽤 쉽습니다. 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));

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


답변

아래 메소드는 특정 확장자를 가진 파일 만 반환합니다 (예 : .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) Getfiles 메소드와 함께 디렉토리 클래스를 사용하고 모든 파일을 탐색하여 필요한 확장자를 확인할 수 있습니다.

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

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

Path.GetExtension (your_file_path) .Equals ( “. json”)

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


답변

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

string[] sDirectoryInfo = Directory.GetFiles(SourcePath, "*.*");


답변