簡體   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