あるフォルダ以下にあるファイルをすべて取得する.NET Framework 1.1以前フォルダ内のすべてのファイルを取得するにはDirectory.GetFilesメソッドを使用します。また、フォルダ内のすべてのファイルとサブフォルダ名を取得するには、Directory.GetFileSystemEntriesメソッドを使用します。ただしこれらのメソッドでは、サブフォルダのファイルやフォルダを取得することはできません。 以下に示すGetAllFilesメソッドは、指定されたフォルダ以下にあるすべてのファイル(ワイルドカード指定ができます)を取得するものです。 [VB.NET] ''' <summary> ''' 指定されたフォルダ以下にあるすべてのファイルを取得する ''' </summary> ''' <param name="folder">ファイルを検索するフォルダ名。</param> ''' <param name="searchPattern">ファイル名検索文字列 ''' ワイルドカード指定子(*, ?)を使用する。</param> ''' <param name="files">見つかったファイル名のリスト</param> Public Sub GetAllFiles(ByVal folder As String, _ ByVal searchPattern As String, ByRef files As ArrayList) 'folderにあるファイルを取得する Dim fs As String() = _ System.IO.Directory.GetFiles(folder, searchPattern) 'ArrayListに追加する files.AddRange(fs) 'folderのサブフォルダを取得する Dim ds As String() = System.IO.Directory.GetDirectories(folder) 'サブフォルダにあるファイルも調べる Dim d As String For Each d In ds GetAllFiles(d, searchPattern, files) Next d End Sub [C#] /// <summary> /// 指定されたフォルダ以下にあるすべてのファイルを取得する /// </summary> /// <param name="folder">ファイルを検索するフォルダ名。</param> /// <param name="searchPattern">ファイル名検索文字列 /// ワイルドカード指定子(*, ?)を使用する。</param> /// <param name="files">見つかったファイル名のリスト</param> public static void GetAllFiles( string folder, string searchPattern, ref ArrayList files) { //folderにあるファイルを取得する string[] fs = System.IO.Directory.GetFiles(folder, searchPattern); //ArrayListに追加する files.AddRange(fs); //folderのサブフォルダを取得する string[] ds = System.IO.Directory.GetDirectories(folder); //サブフォルダにあるファイルも調べる foreach (string d in ds) GetAllFiles(d, searchPattern, ref files); } 次にGetAllFilesメソッドの使い方を示します。ここではフォルダ""以下にあるすべてのファイルのフルパスをリストボックス(ListBox1)に表示しています。 [VB.NET] Dim files As New ArrayList '"C:\My Documents"以下のファイルをすべて取得 GetAllFiles("C:\My Documents", "*.*", files) 'ListBox1に結果を表示する ListBox1.Items.AddRange(files.ToArray()) [C#] ArrayList files = new ArrayList(); //"C:\My Documents"以下のファイルをすべて取得 GetAllFiles(@"C:\My Documents", "*.*", ref files); //ListBox1に結果を表示する ListBox1.Items.AddRange(files.ToArray()); .NET Framework 2.0以降.NET Framework 2.0からは、GetFilesメソッドですべてのサブフォルダを取得できます。このとき、3番目のパラメータにSearchOption.AllDirectoriesを指定します。 以下の例を示します。上の例と同じ事を行っています。 [VB.NET] '"C:\My Documents"以下のファイルをすべて取得 Dim files As String() = System.IO.Directory.GetFiles( _ "C:\My Documents", "*", System.IO.SearchOption.AllDirectories) 'ListBox1に結果を表示する ListBox1.Items.AddRange(files) [C#] //"C:\My Documents"以下のファイルをすべて取得 string[] files = System.IO.Directory.GetFiles( "C:\\My Documents", "*", System.IO.SearchOption.AllDirectories); //ListBox1に結果を表示する ListBox1.Items.AddRange(files); なお、VB.NETではMy.Computer.FileSystem.GetFilesメソッドでも同様のことができます。
|
|
Copyright 2002-2008 DOBON!. All rights reserved.
|