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