Jak przejrzeć wszystkie pliki w katalogu w C # .net?


121

Chcę pobrać pliki w folderze, a także w jego podfolderach. Poniższy kod nie pobiera plików w swoim podfolderze:

string[] files = Directory.GetFiles(txtFolderPath.Text, "*ProfileHandler.cs");

Czy ktoś może mi powiedzieć, jak zaimplementować to w c # .net?


2
Zawsze wolałem metodę MSDN. Na dole tego linku zawierają rekurencyjny przykład z programem konsoli (C #).
Justin

1
@Panuvin - Uwaga: kod MSDN jest trochę niebezpieczny. W przypadku bardzo dużych folderów i zawartości podfolderów (wiele plików) można uzyskać wyjątek StackOverflow (ze względu na kod rekurencyjny)
Joezer

Odpowiedzi:


216
string[] files = 
    Directory.GetFiles(txtPath.Text, "*ProfileHandler.cs", SearchOption.AllDirectories);

Ten ostatni parametr wpływa dokładnie na to, do czego się odnosisz. Ustaw go na AllDirectories dla każdego pliku, w tym w podfolderach, i ustaw go na TopDirectoryOnly, jeśli chcesz wyszukiwać tylko w podanym katalogu, a nie w podfolderach.

Szczegółowe informacje można znaleźć w MDSN: https://msdn.microsoft.com/en-us/library/ms143316(v=vs.110).aspx


5
Będzie to nieskończona pętla, jeśli istnieje pętla w strukturze folderów. Zobacz msdn.microsoft.com/en-us/library/ms143448.aspx
Anthony Wieser

Jaki jest cel środkowego parametru?
przydatneBee

2
Nazywa się searchPattern i jest filtrem, według którego pliki są wybierane. W tym przypadku wybierze wszystkie pliki kończące się na „ProfileHandler.cs”. Spójrz na MDSN
Migwell

3

wypróbuj poniższy kod

Directory.GetFiles(txtFolderPath.Text, "*ProfileHandler.cs",SearchOption.AllDirectories)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.