ファイルやディレクトリの一覧を取得する|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");

結果をソートする

LINQOrderBy()を使って結果をソートします。
下記はファイル名(フルパス)の昇順で並べ替えています.

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);

結果をソートする

ファイル一覧と同様にLINQOrderBy()を使って結果をソートします。
下記はファイル名(フルパス)の昇順で並べ替えています.

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);
このエントリーをはてなブックマークに追加
にほんブログ村 IT技術ブログへ

関連コンテンツ

スポンサードリンク

Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です