폴더 경로 (예 :)가 주어지면 C:\Random Folder
어떻게 특정 확장자를 가진 파일을 찾을 수 txt
있습니까? *.txt
디렉토리에서 검색해야한다고 가정 하지만 처음에이 검색을 어떻게 시작해야하는지 잘 모르겠습니다.
답변:
System.IO.Directory
클래스와 정적 메서드를 살펴보십시오 GetFiles
. 경로 및 검색 패턴을 허용하는 과부하가 있습니다. 예:
string[] files = System.IO.Directory.GetFiles(path, "*.txt");
macos.txt
사실 꽤 쉽습니다. 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")
참고 : 두 논리 모두 루핑 조건 내에 있어야합니다.