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によってコントローラへと渡すサンプルが記載されていました。