c# ディレクトリ内のファイル一覧をソートして取得する方法

c# で、フォルダ内のファイル一覧をソートして取得する方法を紹介します。

基本的な考え方は、DirectoryInfo.GetFiles() でファイル一覧を取得し、LINQのOrderByでソートします。

1. ファイル名の昇順でソートする方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;

public void GetFileSortName()
{
    string folderPath = "./01_Input";
    DirectoryInfo di = new DirectoryInfo(folderPath);

    List<System.IO.FileInfo> files = di.GetFiles(*.*).OrderBy(f => f.Name).ToList();

    foreach (FileInfo file in files) Console.WriteLine(file.Name);
}

DirectoryInfo.GetFiles()でファイル情報を取得後、OrderBy()メソッドでソートしています。

最後にToList()していますので、返り値の型はList<System.IO.FileInfo>になっています。

出力例は以下のようになります。

ファイル名の昇順でソートされます。

AppList.md
blogTemplate.cshtml
BookList.md
Csharp-getfiles-sort.md
gensitemapxmlcs.md
NFTPlatform.md
sitemap.cshtml.template
test.md
VSCodeLiveServer.md
webappmd2html.md

2. 拡張子の昇順でソートする方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;

public void GetFileSortExt()
{
    string folderPath = "./01_Input";
    DirectoryInfo di = new DirectoryInfo(folderPath);

    List<System.IO.FileInfo> files = di.GetFiles(*.*).OrderBy(f => f.Extension).ToList();

    foreach (FileInfo file in files) Console.WriteLine(${file.Extension} {file.Name});
}

ファイル名でのソートと違う部分は、OrderByf => f.Extensionになっているところです。

出力例は以下のとおりです。

.cshtml blogTemplate.cshtml
.md AppList.md
.md BookList.md
.md Csharp-getfiles-sort.md
.md gensitemapxmlcs.md
.md NFTPlatform.md
.md test.md
.md VSCodeLiveServer.md
.md webappmd2html.md
.template sitemap.cshtml.template

3. ファイルサイズの照準でソートする方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;

public void GetFileSortfileSize()
{
    string folderPath = "./01_Input";
    DirectoryInfo di = new DirectoryInfo(folderPath);

    List<System.IO.FileInfo> files = di.GetFiles(*.*).OrderBy(f => f.Length).ToList();

    foreach (FileInfo file in files) Console.WriteLine(${file.Length} {file.Name});
}

この例も違うところは、OrderByf => f.Lengthになっています。

出力例は以下のとおりです。

16 test.md
439 NFTPlatform.md
487 BookList.md
654 blogTemplate.cshtml
669 sitemap.cshtml.template
2342 webappmd2html.md
2503 gensitemapxmlcs.md
2505 Csharp-getfiles-sort.md
2628 VSCodeLiveServer.md
3012 AppList.md

おすすめ本 c#コードレシピ集

c#コードレシピ集は、「文字列を大文字あるいは小文字に変換したい」や「Taskをキャンセルしたい」など逆引き的にコードの書き方を調べられるレシピ集です。

2021年8月に発売された本で、全部で385個のレシピが収録されています。

ジャンルは日付処理やLINQ、並列処理と非同期処理など幅広く記載されています。

Kindle対応ですので、まずはサンプルをダウンロードして何が書かれているか確認してはいかがでしょうか。

コメント

タイトルとURLをコピーしました