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});
}
ファイル名でのソートと違う部分は、OrderBy
がf => 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});
}
この例も違うところは、OrderBy
がf => 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対応ですので、まずはサンプルをダウンロードして何が書かれているか確認してはいかがでしょうか。
リンク
コメント