.net core 文件系统设计

本文围绕.net core中的文件提供器IFileProvider展开。介绍了其可用于读取目录和文件,给出简单示例与设计图。还对相关类如IDirectoryContents、IFileInfo等进行说明,同时列举了.net core已提供的PhysicalFileProvider和EmbeddedFileProvider及其功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

word文档地址:https://github.com/IceEmblem/-/tree/master/%E5%AD%A6%E4%B9%A0%E8%B5%84%E6%96%99/Windows%20%E5%B9%B3%E5%8F%B0/NetCore/.net%20core/.net%20core%20%E6%A1%86%E6%9E%B6%E8%AE%BE%E8%AE%A1%E5%8E%9F%E7%90%86

参考文章:https://www.cnblogs.com/artech/p/inside-asp-net-core-1.html
文件提供器IFileProvider在 .net core 中比较常见吧,我们可以使用IFileProvider读取目录和文件

简单示例

static void Main (string[] args) {
    // 新建文件提供器,指定根目录
    IFileProvider PhysicalFileProvider = new PhysicalFileProvider ("E:\\ProjectTestDir");
    // 获取根目录下的内容
    foreach (var content in PhysicalFileProvider.GetDirectoryContents ("\\")) {
        // 输出路径
        Console.WriteLine (content.PhysicalPath);

        // 如果内容不是目录类型
        if (!content.IsDirectory) {
            // 入读文件
            Stream stream = content.CreateReadStream ();
            byte[] buf = new byte[stream.Length];
            stream.Read (buf, 0, buf.Length);
            Console.WriteLine (Encoding.ASCII.GetString (buf));
        }
	}

    Console.WriteLine ("Hello World!");
}

IFileProvider设计图

出自:https://www.cnblogs.com/artech/p/inside-asp-net-core-1.html
在这里插入图片描述

类介绍

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

IDirectoryContents:表示一个目录中的文件的集合,是IFileInfo的集合
IFileInfo: 表示一个文件或目录

public interface IFileInfo
{
    bool                Exists { get; }         // 是否存在
    bool                IsDirectory { get; }    // 是否是目录
    string              Name { get; }           // 名字
    string              PhysicalPath { get; }   // 完整路径名
    DateTimeOffset      LastModified { get; }   // 最后修改时间
    long                Length { get; }         // 如果是文件,则为文件的长度
 
    Stream              CreateReadStream();     // 如果是文件,返回文件的流
}

IChangeToken:
表示文件改变令牌,可以理解为,文本文件发生改变前后,所获取到的IChangeToken是不同的,利用这一功能,我们可以与ChangeToken配合监听文件改变

public class Program
{
    public static void Main(string[] args)
    {
        IFileProvider fileProvider = new PhysicalFileProvider(@"c:\test");
        // 监听文件改变
        ChangeToken.OnChange(
            () => fileProvider.Watch("data.txt"),   // 获取改变令牌函数
            () => LoadFileAsync(fileProvider));     // 当发生改变时的回调函数
    }
 
    public static async void LoadFileAsync(IFileProvider fileProvider)
    {
    }
}

.net core 已提供的FileProvider

PhysicalFileProvider:
包:Microsoft.Extensions.FileProviders.Physical
物理文件提供器,提供对硬盘数据的访问

EmbeddedFileProvider:
包:Microsoft.Extensions.FileProviders.Embedded
提供对内嵌程序集的文件的访问

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值