ASP.NET Coreでファイルにアクセスする

ソフトウェア開発担当のRyuです。

ASP.NET Coreには、動作環境をWindows以外にも広げたためか、ファイルシステムを抽象化してアクセスするFileProviderという仕組みが追加されました。

使い方はこんな感じです。


// FileProviderを作成
IFileProvider provider = new PhysicalFileProvider(applicationRoot);
// アプリケーションルートの要素を取得
IDirectoryContents contents = provider.GetDirectoryContents(""); 
// アプリケーションルート下のファイルを取得
IFileInfo fileInfo = provider.GetFileInfo("wwwroot/js/site.js"); 

PhysicalFileProviderはあらかじめ用意されているFileProviderでSystem.IO.Fileのラッパらしいです。
この他に埋め込みリソースにアクセスするEmbeddedFileProviderと、両方共に扱えるCompositeFileProviderが用意されています。
IFileProviderを実装すれば独自のFileProviderが作成できるので、ネットワークストレージなどにも対応できるようです。

MSの説明ページではDIによってコントローラへと渡すサンプルが記載されていました。