C# : 現在実行中のパスのファイルの一覧をテキストファイル(UTF8N)に出力する

Microsoft のドキュメントに 方法: ディレクトリとファイルを列挙する というページがあります。そこでは、Directory.EnumerateDirectories を使用したサンプルですが、 List クラスに変換してから foreach を使用しています。

foreach を使用して一覧を取得するだけならば、戻り値の IEnumerable をそのまま使用しても問題無いですが( Directory.EnumerateFiles のサンプルはそのまま使用している )、一般的な認識として List クラスを使用したほうが良いと思います。

※ IEnumerable は Interface であり、クラスを新たに作成する時に使用するものです
※ $ は、文字列補間
※ @ は、逐語的識別子として機能します

01.using System;
02.using System.Collections.Generic;
03.using System.IO;
04.using System.Text;
05. 
06.namespace file_list
07.{
08.        class Program
09.        {
10.                static void Main(string[] args)
11.                {
12.                        // 現在実行中のパス
13.                        string cur_path = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
14. 
15.                        // 文字列補間 / https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/tokens/interpolated
16.                        Console.WriteLine( $"現在実行中のパスは {cur_path} です" );
17. 
18.                        // **********************************************
19.                        // 一覧処理は、IEnumerable のままでも可能ですが、
20.                        // 一般的なコードとして処理する為に
21.                        // List クラスを使用します
22.                        // **********************************************
23.                        List<string> files = new List<string>(Directory.EnumerateFiles(cur_path, "*", SearchOption.TopDirectoryOnly));
24. 
25.                        // 情報を一括で処理する為に文字列としてメモリに保存します
26.                        StringBuilder file_list = new StringBuilder();
27. 
28.                        foreach ( string name in files)
29.                        {
30.                                // ファイルのパスを追加
31.                                file_list.Append(name);
32.                                // 改行を追加
33.                                file_list.AppendLine();
34.                        }
35. 
36.                        // コマンドプロンプトに表示
37.                        Console.Write(file_list.ToString());
38. 
39.                        // 同じ内容をテキストファイルに UTF8N で書き込み
40.                        Encoding enc = new UTF8Encoding();
41. 
42.                        // 書き込むファイル( ドキュメントフォルダ )
43.                        string write_path = string.Format($@"{Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)}\cs_file_list.txt");
44. 
45.                        // 追加書き込み( false で上書き )
46.                        try
47.                        {
48.                                using (StreamWriter write_file = new StreamWriter(write_path, false, enc))
49.                                {
50.                                        // 書き込み
51.                                        write_file.Write(file_list.ToString());
52. 
53.                                        // UTF8N 確認の為
54.                                        write_file.WriteLine("日本語表示");
55. 
56.                                        // 閉じる
57.                                        write_file.Close();
58.                                }
59. 
60.                        }
61.                        catch (Exception ex)
62.                        {
63.                                Console.WriteLine(ex.Message);
64.                        }
65.                        // **********************************************
66.                        // try ブロックは
67.                        // 編集メニュー > IntelliSense > ブロックの挿入
68.                        // **********************************************
69. 
70.                        Console.ReadLine();
71.                }
72.        }
73.}

🔻 テキストエディタのタブを保持する設定


※ 変換は全てコピー > 削除 > 貼り付け