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.
}
テキストエディタのタブを保持する設定 ※ 変換は全てコピー > 削除 > 貼り付け