1.PhysicalFileProvider 物理文件提供程序:
Startup->ConfigureServices中注入
IFileProvider PhysicalProvider = new PhysicalFileProvider(System.IO.Directory.GetCurrentDirectory()); services.AddSingleton(PhysicalProvider);
在Home控制器中拿到服务
private readonly IFileProvider fileProvider;
public HomeController(ILogger<HomeController> logger,
IFileProvider fileProvider)
{
_logger = logger;
this.fileProvider = fileProvider;
}
Index方法中我们使用文件提供程序
public IActionResult Index()
{
IDirectoryContents content= fileProvider.GetDirectoryContents("");
return View(content);
}
Index.cshtml中打印出项目中所有文件
@{
ViewData["Title"] = "Home Page";
}
@using Microsoft.Extensions.FileProviders
@foreach (IFileInfo item in Model)
{
if (item.IsDirectory)
{
<li><span>@item.Name</span></li>
}
else
{
<li>@item.Name--@item.Length bytes</li>
}
}

2.EmbeddedFileProvider 嵌入式文件
创建一个文件
属性设置为嵌入式资源

生成时就会将该文件内容嵌入dll中
Startup->ConfigureServices中注入
//嵌入式文件 IFileProvider emeddedFileProvider = new EmbeddedFileProvider(Assembly.GetEntryAssembly()); services.AddSingleton<IFileProvider>(emeddedFileProvider);
Home控制器中创建一个Read方法 读取我们的嵌入式文件
/// <summary>
/// 读取嵌入式文件
/// </summary>
/// <returns></returns>
public IActionResult Read()
{
IFileInfo file =fileProvider.GetFileInfo("Files/jsconfig.json");
using (var stream= file.CreateReadStream())
{
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, buffer.Length);
string fileString = System.Text.Encoding.Default.GetString(buffer);
return Content(fileString);
}
}
启动项目访问我们的Read方法

成功访问到了我们dll中嵌入的内容
3.组合文件访问程序
可访问多种组合的文件资源
//物理文件
IFileProvider PhysicalProvider = new
PhysicalFileProvider(System.IO.Directory.GetCurrentDirectory());
//嵌入式文件
IFileProvider emeddedFileProvider = new
EmbeddedFileProvider(Assembly.GetEntryAssembly());
//组合
IFileProvider compositeFileProvider =
new CompositeFileProvider(PhysicalProvider, emeddedFileProvider);
//注入
services.AddSingleton(compositeFileProvider);
直接启动程序
物理文件提供程序与嵌入式文件提供程序功能都能使用
原文:https://www.cnblogs.com/lbonet/p/14683551.html