ファイルやディレクトリの一覧を取得する|C#
C#で特定のディレクトリにあるファイルやディレクトリの一覧を取得する方法です。
ファイル一覧を取得する
Directory
クラスのGetFiles()
またはEnumerateFiles()
を使います。
第3引数にSearchOption.AllDirectories
を指定するとサブディレクトリのファイルも取得します。
GetFiles()
using System.IO;
// C:\work にあるファイル一覧を取得.
string[] files = Directory.GetFiles(@"C:\work", "*");
// C:\work とそのサブディレクトリにあるファイル一覧を取得.
string[] files = Directory.GetFiles(@"C:\work", "*", SearchOption.AllDirectories);
// C:\work にある拡張子がcsvのファイル一覧を取得.
string[] files = Directory.GetFiles(@"C:\work", "*.csv");
EnumerateFiles()
using System.Collections.Generic;
using System.IO;
// C:\work にあるファイル一覧を取得.
IEnumerable<string> files = Directory.EnumerateFiles(@"C:\work", "*");
// C:\work とそのサブディレクトリにあるファイル一覧を取得.
IEnumerable<string> files = Directory.EnumerateFiles(@"C:\work", "*", SearchOption.AllDirectories);
// C:\work にある拡張子がcsvのファイル一覧を取得.
IEnumerable<string> files = Directory.EnumerateFiles(@"C:\work", "*.csv");
結果をソートする
LINQ
のOrderBy()
を使って結果をソートします。
下記はファイル名(フルパス)の昇順で並べ替えています.
using System.IO;
using System.Linq;
// IEnumerable<string> 型で返される.
var files = Directory.GetFiles(@"C:\work", "*.csv").OrderBy(name => name);
または
// IEnumerable<string> 型で返される.
var files = Directory.EnumerateFiles(@"C:\work", "*.csv").OrderBy(name => name);
ディレクトリ一覧を取得する
Directory
クラスのGetDirectories()
またはEnumerateDirectories()
を使います。
第3引数にSearchOption.AllDirectories
を指定するとサブディレクトリにあるディレクトリも取得します。
GetDirectories()
using System.IO;
// C:\temp にあるディレクトリ一覧を取得.
string[] directries = Directory.GetDirectories(@"C:\temp");
// C:\temp とそのサブディレクトリにあるディレクトリ一覧を取得.
string[] directries = Directory.GetDirectories(@"C:\temp", "*", SearchOption.AllDirectories);
EnumerateFiles()
using System.Collections.Generic;
using System.IO;
// C:\work にあるファイル一覧を取得.
IEnumerable<string> directries = Directory.EnumerateDirectories(@"C:\temp");
// C:\temp とそのサブディレクトリにあるディレクトリ一覧を取得.
IEnumerable<string> directries = Directory.EnumerateDirectories(@"C:\temp", "*", SearchOption.AllDirectories);
結果をソートする
ファイル一覧と同様にLINQ
のOrderBy()
を使って結果をソートします。
下記はファイル名(フルパス)の昇順で並べ替えています.
using System.IO;
using System.Linq;
// IEnumerable<string> 型で返される.
var directries = Directory.GetDirectories(@"C:\temp").OrderBy(name => name);
または
// IEnumerable<string> 型で返される.
var directries = Directory.EnumerateDirectories(@"C:\temp").OrderBy(name => name);