c#.netのディレクトリにあるすべてのファイルをループする方法は?


121

フォルダー内とそのサブフォルダー内のファイルを取得したいと思います。次のコードは、そのサブフォルダー内のファイルを取得しません。

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

誰でもこれをc#.netに実装する方法を教えてください?


2
私は常に、MSDNによる方法を優先してきました。このリンクの下部に、コンソールプログラム(C#)を使用した再帰的な例があります。
ジャスティン

1
@Panuvin-注:MSDNコードは少し危険です。非常に大きなフォルダーとサブフォルダーのコンテンツ(多数のファイル)の場合、StackOverflow例外が発生する可能性があります(再帰的なコードのため)
Joezer

回答:


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

最後のパラメーターは、あなたが参照しているものに正確に影響します。サブフォルダを含むすべてのファイルに対してAllDirectoriesに設定し、サブフォルダではなく指定されたディレクトリのみを検索する場合は、TopDirectoryOnlyに設定します。

詳細については、MDSNを参照してください:https ://msdn.microsoft.com/en-us/library/ms143316(v=vs.110).aspx


5
フォルダ構造にループがある場合、これは無限ループになります。msdn.microsoft.com/en-us/library/ms143448.aspx
Anthony Wieser

中間パラメーターの目的は何ですか?
有用なビー

2
これはsearchPatternと呼ばれ、ファイルを選択するためのフィルターです。この場合、「ProfileHandler.cs」で終わるすべてのファイルが選択されます。見ていMDSN
Migwell

3

以下のコードを試してください

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.