#author("2019-12-21T17:18:49+09:00","","") #author("2019-12-21T18:24:28+09:00","","") #navi(../) * ファイル一覧を取得する・GetFiles,EnumerateFiles,Directory.GetFiles [#ia047b5a] ''System.IO.Directory.GetFiles'', ''System.IO.Directory.EnumerateFiles''を使ったファイル名一覧を取得するサンプルコードを紹介します。~ System.IO.Directory.GetFilesはStringの配列が結果として返却され、System.IO.Directory.EnumerateFilesは、IEnumerable<string>,IEnumerable(Of String)が返却されます。~ オプションにより、サブフォルダのファイル一覧も取得することができます。~ 以下に C#, Visual Basic(VB) のサンプルコードを紹介します。 #htmlinsert(windev-top.html) #contents * 参考サイト [#p8a9bc28] -[[Microsoft|.NET Directory クラス>https://docs.microsoft.com/ja-jp/dotnet/api/system.io.directory?view=netframework-4.8]] -[[Microsoft|.NET Directory.GetFiles メソッド>https://docs.microsoft.com/ja-jp/dotnet/api/system.io.directory.getfiles?view=netframework-4.8]] -[[Microsoft|.NET Directory.EnumerateFiles メソッド>https://docs.microsoft.com/ja-jp/dotnet/api/system.io.directory.enumeratefiles?view=netframework-4.8]] -[[Microsoft|.NET IEnumerable>T< インターフェイス>https://docs.microsoft.com/ja-jp/dotnet/api/system.collections.generic.ienumerable-1?view=netframework-4.8]] -[[Microsoft|.NET IEnumerable<T> インターフェイス>https://docs.microsoft.com/ja-jp/dotnet/api/system.collections.generic.ienumerable-1?view=netframework-4.8]] -[[Microsoft|.NET SearchOption 列挙型>https://docs.microsoft.com/ja-jp/dotnet/api/system.io.searchoption?view=netframework-4.8]] * 使用環境 [#dcafe479] -Windows 10 ver.1903 -Visual Studio 2019 -.NET Core -コンソールアプリケーション * System.IO.Directory.GetFiles のサンプルコード [#k9bf4ca5] System.IO.Directory.GetFiles メソッドを使ったサンプルコードを以下に紹介します。 ** 指定したディレクトリ内のファイル一覧を取得する [#m50508e4] 以下のC#,Visual Basic(VB)のサンプルコードは、指定したディレクトリ内のファイル一覧を取得するサンプルコードをになります。~ &color(red){''フォルダは対象になりません。ファイルのみの取得となります。''}; *** C# [#n3ca48de] using System; class Program { static void Main(string[] args) { String path = @"C:\Windows\SoftwareDistribution"; String[] files; try { files = System.IO.Directory.GetFiles(path); foreach (string f in files) { Console.WriteLine(f); } } catch (Exception e) { Console.WriteLine(e.Message); } } } *** Visual Basic(VB) [#mbc746a4] Imports System Module Program Sub Main(args As String()) Dim path As String = "C:\Windows\SoftwareDistribution" Dim files As String() Try files = System.IO.Directory.GetFiles(path) For Each f As String In files Console.WriteLine(f) Next Catch e As Exception Console.WriteLine(e.Message) End Try End Sub End Module *** 実行結果 [#s226592c] 上記サンプルコードで指定した、C:\Windows\SoftwareDistribution ディレクトリ内のファイル一覧が表示されます。 #ref(01.png) #br ** 指定したディレクトリおよびサブディレクトリ内のファイル一覧を取得する [#hd21a9ec] 以下のC#,Visual Basic(VB)のサンプルコードは、指定したディレクトリ内のファイルおよび''サブディレクトリ内''のファイル一覧を取得するサンプルコードをになります。~ &color(red){''フォルダは対象になりません。ファイルのみの取得となります。''}; *** C# [#db615078] 上記のサンプルコードとの違いは、以下の部分になります。 System.IO.Directory.GetFiles(path,"*",System.IO.SearchOption.AllDirectories); 2番目の引数がパターンなので、すべてを対象とする''*''を指定し、すべてのディレクトリを取得する ''AllDirectories'' を指定しています。~ ''AllDirectories''については、以下のリンクを参照してください。 -[[Microsoft|.NET SearchOption 列挙型>https://docs.microsoft.com/ja-jp/dotnet/api/system.io.searchoption?view=netframework-4.8]] using System; class Program { static void Main(string[] args) { String path = @"C:\Windows\SoftwareDistribution"; String[] files; try { files = System.IO.Directory.GetFiles(path,"*",System.IO.SearchOption.AllDirectories); foreach (string f in files) { Console.WriteLine(f); } } catch (Exception e) { Console.WriteLine(e.Message); } } } *** Visual Basic(VB) [#q9be33b5] 上記のサンプルコードとの違いは、以下の部分になります。 System.IO.Directory.GetFiles(path, "*", System.IO.SearchOption.AllDirectories) 2番目の引数がパターンなので、すべてを対象とする''*''を指定し、すべてのディレクトリを取得する ''AllDirectories'' を指定しています。~ ''AllDirectories''については、以下のリンクを参照してください。 -[[Microsoft|.NET SearchOption 列挙型>https://docs.microsoft.com/ja-jp/dotnet/api/system.io.searchoption?view=netframework-4.8]] Imports System Module Program Sub Main(args As String()) Dim path As String = "C:\Windows\SoftwareDistribution" Dim files As String() Try files = System.IO.Directory.GetFiles(path, "*", System.IO.SearchOption.AllDirectories) For Each f As String In files Console.WriteLine(f) Next Catch e As Exception Console.WriteLine(e.Message) End Try End Sub End Module *** 実行結果 [#f6c003f1] サブフォルダを含むファイル一覧が表示されます。~ #ref(02.png) * System.IO.Directory.EnumerateFiles のサンプルコード [#l5ef6c94] System.IO.Directory.EnumerateFiles メソッドを使ったサンプルコードを以下に紹介します。 ** 指定したディレクトリ内のファイル一覧を取得する [#sc53b620] 以下のC#,Visual Basic(VB)のサンプルコードは、指定したディレクトリ内のファイル一覧を取得するサンプルコードをになります。~ &color(red){''フォルダは対象になりません。ファイルのみの取得となります。''}; *** C# [#mfae2633] using System; using System.Collections.Generic; class Program { static void Main(string[] args) { String path = @"C:\Windows\SoftwareDistribution"; IEnumerable<string> files; try { files = System.IO.Directory.EnumerateFiles(path); foreach (string f in files) { Console.WriteLine(f); } } catch (Exception e) { Console.WriteLine(e.Message); } } } *** Visual Basic(VB) [#vc061467] Imports System Imports System.Collections.Generic Module Program Sub Main(args As String()) Dim path As String = "C:\Windows\SoftwareDistribution" Dim files As IEnumerable(Of String) Try files = System.IO.Directory.EnumerateFiles(path) For Each f As String In files Console.WriteLine(f) Next Catch e As Exception Console.WriteLine(e.Message) End Try End Sub End Module *** 実行結果 [#a90617f4] 上記サンプルコードで指定した、C:\Windows\SoftwareDistribution ディレクトリ内のファイル一覧が表示されます。 #ref(03.png) #br ** 指定したディレクトリおよびサブディレクトリ内のファイル一覧を取得する [#w68554c7] 以下のC#,Visual Basic(VB)のサンプルコードは、指定したディレクトリ内のファイルおよび''サブディレクトリ内''のファイル一覧を取得するサンプルコードをになります。~ &color(red){''フォルダは対象になりません。ファイルのみの取得となります。''}; *** C# [#g37a8da3] 上記のサンプルコードとの違いは、以下の部分になります。 System.IO.Directory.EnumerateFiles(path,"*",System.IO.SearchOption.AllDirectories); 2番目の引数がパターンなので、すべてを対象とする''*''を指定し、すべてのディレクトリを取得する ''AllDirectories'' を指定しています。~ ''AllDirectories''については、以下のリンクを参照してください。 -[[Microsoft|.NET SearchOption 列挙型>https://docs.microsoft.com/ja-jp/dotnet/api/system.io.searchoption?view=netframework-4.8]] using System; using System.Collections.Generic; class Program { static void Main(string[] args) { String path = @"C:\Windows\SoftwareDistribution"; IEnumerable<string> files; try { files = System.IO.Directory.EnumerateFiles(path, "*", System.IO.SearchOption.AllDirectories); foreach (string f in files) { Console.WriteLine(f); } } catch (Exception e) { Console.WriteLine(e.Message); } } } *** Visual Basic(VB) [#v4516fd8] 上記のサンプルコードとの違いは、以下の部分になります。 System.IO.Directory.EnumerateFiles(path, "*", System.IO.SearchOption.AllDirectories) 2番目の引数がパターンなので、すべてを対象とする''*''を指定し、すべてのディレクトリを取得する ''AllDirectories'' を指定しています。~ ''AllDirectories''については、以下のリンクを参照してください。 -[[Microsoft|.NET SearchOption 列挙型>https://docs.microsoft.com/ja-jp/dotnet/api/system.io.searchoption?view=netframework-4.8]] Imports System Imports System.Collections.Generic Module Program Sub Main(args As String()) Dim path As String = "C:\Windows\SoftwareDistribution" Dim files As IEnumerable(Of String) Try files = System.IO.Directory.EnumerateFiles(path, "*", System.IO.SearchOption.AllDirectories) For Each f As String In files Console.WriteLine(f) Next Catch e As Exception Console.WriteLine(e.Message) End Try End Sub End Module *** 実行結果 [#pf618659] サブフォルダを含むファイル一覧が表示されます。~ #ref(04.png) 以上、ファイル一覧を取得するメソッド、GetFiles と EnumerateFiles のサンプルコードの紹介でした。 #htmlinsert(windev-btm.html)