72369
タイトル通りですが、指定したディレクトリ内のディレクトリとファイル名を取得するにはどうすればいいのでしょうか。

ディレクトリからファイル名まではわかりましたがディレクトリの中にディレクトリが２つありその中にディレクトリがありといったディレクトリ構造とファイル名を取得する方法がわかりません。どうすればいいのでしょうか？

参考サイト:  
[Directory.EnumerateFileSystemEntries メソッド (System.IO) | Microsoft
Docs](https://docs.microsoft.com/ja-
jp/dotnet/api/system.io.directory.enumeratefilesystementries?view=net-5.0#System_IO_Directory_EnumerateFileSystemEntries_System_String_)

```

    using System;
    using System.IO;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Diagnostics;
    
    namespace MusicFile_Encoder
    {
        class Encorder
        {
            public Encorder()
            {
                //System.Console.WriteLine("コンストラクタ\n");
            }
    
            // メイン
            public void Update()
            {
                Console.Write("FilePath >  ");
                string FilePath = Console.ReadLine();
    
                IEnumerable<string> files = System.IO.Directory.EnumerateFileSystemEntries(FilePath);
    
                //ファイルを列挙する
                foreach (string f in files)
                {
                    Console.WriteLine(f);
                }
    
                Console.ReadKey();
            }
        }
    
        class Program
        {
            static void Main(string[] args)
            {
                Encorder enc = new Encorder();
                enc.Update();
                //  Console.ReadKey();
            }
        }
    }
    
```
CC BY-SA 4.0
2020-12-03T11:02:57.993
72368
2020-12-03T12:03:57.993
2020-12-03T11:57:26.447
3060
question
c#
指定したディレクトリ内のディレクトリとファイルを取得したい
質問記事の参照先では、こちらの`SearchOption`パラメータ指定で取得できます。  
[EnumerateFileSystemEntries(String, String,
SearchOption)](https://docs.microsoft.com/ja-
jp/dotnet/api/system.io.directory.enumeratefilesystementries?view=net-5.0#System_IO_Directory_EnumerateFileSystemEntries_System_String_System_String_System_IO_SearchOption_)

>
> 指定されたパスにあるディレクトリのうち、検索パターンに一致するファイル名およびディレクトリ名の列挙可能なコレクションを返します。オプションでサブディレクトリを検索対象にすることができます。

質問のソースで言えば以下の行のように変更すれば良いでしょう。

```

    IEnumerable<string> files = System.IO.Directory.EnumerateFileSystemEntries(FilePath, "", SearchOption.AllDirectories);
    
```

他にディレクトリだけ、ファイルだけを取得するこんなメソッドもあります。  
[EnumerateDirectories(String, String,
SearchOption)](https://docs.microsoft.com/ja-
jp/dotnet/api/system.io.directory.enumeratedirectories?view=net-5.0#System_IO_Directory_EnumerateDirectories_System_String_System_String_System_IO_SearchOption_)

>
> 指定されたパスから、検索パターンに一致するディレクトリの完全名から成る、列挙可能なコレクションを返します。オプションでサブディレクトリを検索対象にできます。

[EnumerateFiles(String, String, SearchOption)](https://docs.microsoft.com/ja-
jp/dotnet/api/system.io.directory.enumeratefiles?view=net-5.0#System_IO_Directory_EnumerateFiles_System_String_System_String_System_IO_SearchOption_)

> 指定されたパスから、検索パターンに一致するファイルの完全名から成る、列挙可能なコレクションを返します。オプションでサブディレクトリを検索対象にできます。

* * *

なお、属性を指定したい(隠しファイル/システムファイルを含めたい)とか名前のパターンを大文字/小文字の区別付きで指定したい場合などは、こちらの`EnumerationOptions`パラメータを指定する方法になります。  
[EnumerateFileSystemEntries(String, String,
EnumerationOptions)](https://docs.microsoft.com/ja-
jp/dotnet/api/system.io.directory.enumeratefilesystementries?view=net-5.0#System_IO_Directory_EnumerateFileSystemEntries_System_String_System_String_System_IO_EnumerationOptions_)

> 指定したパス内にあり、検索パターンと列挙オプションに一致する、ファイル名とディレクトリ名の列挙可能なコレクションを返します。

[EnumerateDirectories(String, String,
EnumerationOptions)](https://docs.microsoft.com/ja-
jp/dotnet/api/system.io.directory.enumeratedirectories?view=net-5.0#System_IO_Directory_EnumerateDirectories_System_String_System_String_System_IO_EnumerationOptions_)

> 指定したパス内にあり、検索パターンと一致するディレクトリの完全名の列挙可能なコレクションを返します。必要に応じて、サブディレクトリを検索します。

[EnumerateFiles(String, String,
EnumerationOptions)](https://docs.microsoft.com/ja-
jp/dotnet/api/system.io.directory.enumeratefiles?view=net-5.0#System_IO_Directory_EnumerateFiles_System_String_System_String_System_IO_EnumerationOptions_)

>
> 指定したパス内にあり、検索パターンと列挙オプションに一致する、ファイルの完全名の列挙可能なコレクションを返します。必要に応じて、サブディレクトリを検索します。
CC BY-SA 4.0
2020-12-03T11:38:56.447
72369
2020-12-03T12:03:57.993
2020-12-03T12:03:57.993
26370
26370
72368
answer