繁体   English   中英

如何使用IFileInfo删除ASP.NET Core中的文件

[英]How to use IFileInfo to delete a file in ASP.NET Core

我已经读过,我最好使用IFileProvider来管理ASP.NET Core Microsoft文档中的文件 但是,如果我使用GetFileInfo()方法,我将有权访问IFileInfo ,它只提供了一些读取文件的方法!

如何删除文件?

您在评论中建议您关心的是您的代码可能在不同的操作系统中运行的不同形式的路径 只要你不尝试将string.Concat+位路径组合在一起,在StringBuilder中构建它们或以任何其他方式尝试假装你可以在任何情况下自己构建一个有效的路径会好的:)。 System.IO命名空间中与文件系统相关的类专门用于帮助您实现此目的,因此请使用它们。

如果您已经从其他地方获得了IFileProvider的实例(比如您正在使用的枚举文件显示给用户,以便他们可以选择要删除的文件),您可以将其与System.IO混合使用System.IO ,也许是这样的:

public void SomeMethodThatsCalled()
{
    // I'm presuming there's a lot of other code here, and that the IFileProvider
    // is actually dependency injected somewhere, somehow, but it's self-contained
    // here for completeness
    IFileProvider physicalFileProvider = new PhysicalFileProvider(@"D:\DeleteMyContentsPlease\");

    DeleteFiles(physicalFileProvider);
}

private void DeleteFiles(IFileProvider physicalFileProvider)
{
    if (physicalFileProvider is PhysicalFileProvider)
    {
        var directory = physicalFileProvider.GetDirectoryContents(string.Empty);
        foreach (var file in directory)
        {
            if (!file.IsDirectory)
            {
                var fileInfo = new System.IO.FileInfo(file.PhysicalPath);
                fileInfo.Delete();

            }
        }
    }
}

绝对没有错误检查,验证,异常处理或其他任何将远程使目前的这种生产代码在这里 (与实际检查该目录中的条目是不是一个目录可能是个例外!),所以请不要使用它原样。

同样:如果你没有从任何地方获得IFileSystem的实例,不要特别IFileSystem创建一个只删除文件!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM