Biorąc pod uwagę ścieżkę do folderu (na przykład C:\Random Folder
), jak mogę znaleźć w nim plik, który ma określone rozszerzenie, na przykład txt
? Zakładam, że będę musiał przeprowadzić wyszukiwanie *.txt
w katalogu, ale nie jestem pewien, jak mam rozpocząć to wyszukiwanie w pierwszej kolejności.
93
macos.txt
Możesz użyć klasy Directory
Directory.GetFiles(path, "*.txt", SearchOption.AllDirectories)
źródło
Właściwie to całkiem proste. Możesz używać
System.IO.Directory
klasy w połączeniu zSystem.IO.Path
. Coś takiego (użycie LINQ sprawia, że jest to jeszcze łatwiejsze):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));
Oczywiście istnieje wiele odmian tej techniki. Niektóre z pozostałych odpowiedzi są prostsze, jeśli filtr jest prostszy. Ten ma zaletę w postaci opóźnionego wyliczania (jeśli to ma znaczenie) i bardziej elastycznego filtrowania kosztem większej ilości kodu.
źródło
Poniższa metoda zwraca tylko pliki z określonym rozszerzeniem (np. Plik z rozszerzeniem .txt, ale nie .txt1)
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)); }
źródło
Zgodnie z moim rozumieniem można to zrobić na dwa sposoby:
1) Możesz użyć klasy katalogu z metodą Getfiles i przejść przez wszystkie pliki, aby sprawdzić nasze wymagane rozszerzenie.
2) Możesz użyć klasy ścieżki z metodą GetExtension, która przyjmuje ścieżkę pliku jako parametr i weryfikuje rozszerzenie. Aby uzyskać ścieżkę do pliku, wystarczy ustawić warunek pętli, który pobierze pojedynczy plik i zwróci ścieżkę do pliku, której można użyć do weryfikacji.
Uwaga: Obie logiki muszą znajdować się w stanie zapętlenia.
źródło
Użyj tego kodu do odczytu pliku ze wszystkimi typami plików rozszerzeń.
string[] sDirectoryInfo = Directory.GetFiles(SourcePath, "*.*");
źródło