#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&gt;T&lt; インターフェイス>https://docs.microsoft.com/ja-jp/dotnet/api/system.collections.generic.ienumerable-1?view=netframework-4.8]]
-[[Microsoft|.NET IEnumerable&lt;T&gt; インターフェイス>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)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS