网易首页 > 网易号 > 正文 申请入驻

.Net Core使用File Providers

0
分享至

ASP.Net Core 为了便于获取文件和文件夹信息,监视文件变更, 在文件系统中提供了一个抽象层:File Providers, 这篇文章将会讨论如何使用 File Providers 。

File Provider 抽象层

file prodivers 实现了 IFileProvider 接口,它的实现子类大概有三块: Physical,Embedded 和 Composite ,同时这个接口提供了可用于获取文件和文件夹的相关信息的方法,接口定义如下:

public interface IFileProvider { IDirectoryContents GetDirectoryContents(string subpath); IFileInfo GetFileInfo(string subpath); IChangeToken Watch(string filter); }

如果要实现 更改通知,还需要用 IChangeToken 接口,代码如下:

public interface IChangeToken { bool ActiveChangeCallbacks { get; } bool HasChanged { get; } IDisposable RegisterChangeCallback(Action callback, object state); }

下面是 IFileProvider 接口的三个具体实现及应用,罗列如下:

  1. 1. PhysicalFileProvider

用于对 物理文件 的访问

  1. 1. EmbeddedFileProvider

用于对 程序集 内的文件访问

  1. 1. CompositeFileProvider

实现前面两者的混合访问

使用 PhysicalFileProvider

要想在 ASP.Net Core 中演示 PhysicalFileProvider,首先将其注入到 ServiceCollection 容器中,如下代码所示:

public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(); IFileProvider physicalProvider = new PhysicalFileProvider(Directory.GetCurrentDirectory()); services.AddSingleton(physicalProvider); }

注入到容器后,现在就可以在 Controller 使用依赖注入获取实例了,如下代码所示:

public class HomeController : Controller { private readonly ILogger_logger; private readonly IFileProvider _fileProvider; public HomeController(ILoggerlogger, IFileProvider fileProvider) { _logger = logger; this._fileProvider = fileProvider; } }

下面在 Index 方法中使用 GetDirectoryContents() 来获取当前项目文件夹下的所有文件,如下代码所示:

public IActionResult Index() { Listlst = new List(); var contents = _fileProvider.GetDirectoryContents(""); foreach (IFileInfo fileInfo in contents) { lst.Add(fileInfo.Name); } return View(); }

使用 EmbeddedFileProvider

顾名思义,它就是用来访问注入到 程序集 中的文件,下面的代码展示了如何将 EmbeddedFileProvider 注入到 ASP.Net Core 的容器中,如下代码所示:

public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(); IFileProvider embeddedProvider = new EmbeddedFileProvider(Assembly.GetEntryAssembly()) ; services.AddSingleton(embeddedProvider); }

使用 CompositeFileProvider

看到 Composite 单词,是不是想起了设计模式中的 组合模式,对的,这里 CompositeFileProvider 也是类似的操作手法,它可以将一个或者多个的 EmbeddedFileProvider 和 PhysicalFileProvider 进行组合,进而合成一个 CompositeFileProvider 供上层进行访问,如果有点懵的话,可参考如下代码:

var physicalProvider = _env.ContentRootFileProvider; var embeddedProvider = new EmbeddedFileProvider(Assembly.GetEntryAssembly()); var compositeProvider = new CompositeFileProvider(physicalProvider, embeddedProvider);

总的来说,你可以利用 File Providers 来获取文件或文件夹的信息,同时也可以实现变更通知,如果想在 ASP.Net Core 中实现文件系统访问,可以通过依赖注入的方式按需使用你的 File Provider。

原文来自:https://netsecurity.51cto.com/art/202102/645170.htm
本文地址:https://www.linuxprobe.com/asp-net-core-uses-file-providers.html
Linux命令大全:https://www.linuxcool.com/

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
任正非小女儿代言华为炸场!网友:代言人都自研,你们拿什么和我争...

任正非小女儿代言华为炸场!网友:代言人都自研,你们拿什么和我争...

品牌新
2026-04-16 12:10:00
这才是宋美龄和继子蒋经国的一张真实合影,都是真人的容貌

这才是宋美龄和继子蒋经国的一张真实合影,都是真人的容貌

喜欢历史的阿繁
2026-04-16 11:17:28
你何曾见过如此精致的女人,太干净了

你何曾见过如此精致的女人,太干净了

可乐谈情感
2026-04-17 01:16:02
71.5%!历史性暴跌,以贷养贷的泡沫崩了

71.5%!历史性暴跌,以贷养贷的泡沫崩了

月满大江流
2026-04-16 13:54:38
确认了!两人系间谍

确认了!两人系间谍

浙江之声
2026-04-16 22:16:31
男子取现11万元,称“结婚用”,电话那头的妻子懵了:干什么呀,我俩早结了

男子取现11万元,称“结婚用”,电话那头的妻子懵了:干什么呀,我俩早结了

极目新闻
2026-04-16 20:44:18
许家印多出的两个私生子!跟谁生的?再扒恒大歌舞团

许家印多出的两个私生子!跟谁生的?再扒恒大歌舞团

大江看潮
2026-04-16 22:20:58
山东某女子与闺蜜及丈夫同住十年,这三人组合可谓天作之合

山东某女子与闺蜜及丈夫同住十年,这三人组合可谓天作之合

科学发掘
2026-04-16 17:27:32
王健林,被逼到崩溃边缘...

王健林,被逼到崩溃边缘...

鸣金网
2026-04-16 19:42:33
同济大学教师王某团队一年两登《自然》的论文被指造假,本人曾称“十年磨一剑” 学校正调查

同济大学教师王某团队一年两登《自然》的论文被指造假,本人曾称“十年磨一剑” 学校正调查

红星新闻
2026-04-16 21:08:20
两名外籍乘客在网约车上对着部队大门连续拍照,接下来又要去训练场方向,司机觉得可疑,直接开车把他们交给了部队

两名外籍乘客在网约车上对着部队大门连续拍照,接下来又要去训练场方向,司机觉得可疑,直接开车把他们交给了部队

极目新闻
2026-04-16 08:59:25
投诉公交提前发车,竟丢了工作?松原男子称个人信息遭泄露,单位被施压后将其解雇

投诉公交提前发车,竟丢了工作?松原男子称个人信息遭泄露,单位被施压后将其解雇

大风新闻
2026-04-16 16:07:03
当执法者将国家法律摔在地上,请先别讨论摩托能否上高速和张雪了

当执法者将国家法律摔在地上,请先别讨论摩托能否上高速和张雪了

阿陆
2026-04-16 14:52:08
悲催!网传武汉某双非高校一寝室6人,仅1人找到月薪3500元工作…

悲催!网传武汉某双非高校一寝室6人,仅1人找到月薪3500元工作…

火山詩话
2026-04-16 13:58:24
为什么国际油价跌了20%,国内油价只降5%?

为什么国际油价跌了20%,国内油价只降5%?

生命可以承受之轻
2026-04-16 18:49:12
巴基斯坦代表抵达,伊朗“压箱底”战机升空迎接!穆尼尔穿梭斡旋背负双重使命

巴基斯坦代表抵达,伊朗“压箱底”战机升空迎接!穆尼尔穿梭斡旋背负双重使命

红星新闻
2026-04-16 16:00:17
杭州一诊所用一个针头给15人采血,居民担心传染疾病,诊所负责人:已开除涉事员工,并带采血居民体检打疫苗

杭州一诊所用一个针头给15人采血,居民担心传染疾病,诊所负责人:已开除涉事员工,并带采血居民体检打疫苗

极目新闻
2026-04-16 18:04:42
杜锋做出一个重要的决定,辞退广东队得分王!

杜锋做出一个重要的决定,辞退广东队得分王!

体育哲人
2026-04-16 23:14:10
随着佛罗伦萨2-4,波尔图1-2,维拉7-1,欧联和欧协联4强对阵出炉

随着佛罗伦萨2-4,波尔图1-2,维拉7-1,欧联和欧协联4强对阵出炉

侧身凌空斩
2026-04-17 05:17:26
匈牙利撤军:人还没走,茶就凉了

匈牙利撤军:人还没走,茶就凉了

寰宇大观察
2026-04-16 17:20:43
2026-04-17 07:32:49
孙有匪 incentive-icons
孙有匪
科技
1595文章数 2008关注度
往期回顾 全部

科技要闻

赵明:智驾之战,看谁在大模型上更高效

头条要闻

特朗普:伊朗已同意几乎所有要求

头条要闻

特朗普:伊朗已同意几乎所有要求

体育要闻

皇马拜仁踢出名局,但最抢镜的还是他

娱乐要闻

丝芭传媒创始人王子杰去世,享年63岁

财经要闻

海尔与医美女王互撕 换血抗衰谁的生意?

汽车要闻

空间大五个乘客都满意?体验岚图泰山X8

态度原创

教育
时尚
家居
房产
游戏

教育要闻

牛剑之外,近十年从未降低过门槛的三所英国大学!

爆火的前额叶梗,让多少年轻人主动确诊「脑残」?

家居要闻

智能舒适 简约风尚

房产要闻

人人人人!封关后首届消博会,挤爆了!

可爱又凶狠!卡牌新游《小熊牌屋》中文上线特惠开启

无障碍浏览 进入关怀版