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

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

速攻でメモできる QuickNote リリースしました!

QuickNoteは動作が超軽量でサクサクかけるノートアプリです。一瞬の閃きを逃さずにノートを開き書き始めることができます。 アカウント登録も不要です。お試しあれ!

Excel操作をコマンドで! proBoarderExcel

Excelはマウスで操作するのが基本ですが、マウス操作に疲れてはいませんか? キーボードでExcel操作ができるようになるアプリです。オープンソースで無料です。

積み上げ! Daily Stack リリースしました!

Daily Stack は日々の積み上げを管理するToDoアプリです。過去の積み上げの振り返りだけでなく、ツイート機能もあります。 アカウント登録不要ですぐに使い始めることができます。

ExecNote.app リリースしました!

ExecNoteは、コードが実行できるMarkdownアプリケーションです。Markdownドキュメント内に記載したコードをクリックすると実行ができます。わざわざターミナルを 起動させる必要がありません!無料ですのでもしよければダウンロードをお願いします。

About Me

11年目のシステムエンジニアです。アプリで生活や仕事を改善したい🐱仕事効率化、自動化のアプリ開発が得意です、ご相談ください。 🚀エンタメ系アプリの開発も模索中🐬社内SEや個人アプリ開発者、システムエンジニアになりたい人と繋がりたい🐱