簡體   English   中英

嘗試從名稱匹配\\的單個目錄中刪除多個文件包含特定字符串

[英]Trying to delete multiple files from a single directory whose names match\contain a particular string

我想刪除圖像文件。 這些文件名為somefile.jpgsomefile_t.jpg ,最后帶_t的文件是縮略圖。 使用此刪除操作,我希望刪除縮略圖和原始圖像。

代碼一直運行到foreach循環, GetFiles方法返回任何內容。 string.Substring操作成功返回沒有擴展名的文件名,也沒有_t例如: somefile

我想刪除的文件名中沒有無效字符。 代碼對我來說很好,只有我能想到的是我在某種程度上沒有正確使用searchpattern函數。

filesource = "~/somedir/somefile_t.jpg"

var dir = Server.MapPath(filesource);


            FileInfo FileToDelete = new FileInfo(dir);


            if (FileToDelete.Exists) 
            { 
                var FileName = Path.GetFileNameWithoutExtension(FileToDelete.Name);

                foreach(FileInfo file in FileToDelete.Directory.GetFiles(FileName.Substring(0, FileName.Length - 2), SearchOption.TopDirectoryOnly).ToList())
               {
                   file.Delete();
               }

            }

DirectoryInfo.GetFiles方法(String,SearchOption)

, is proper. 您需要確保第一個參數正確。 在你的情況下,你提供FileName.Substring(0, FileName.Length - 2) ,這將是“somefile” 該方法什么都不返回的原因是因為您正在尋找名為somefile的文件。 as opposed to any other one. 你打算做的是除了基本文件名之外還使用通配符: String.Concat(FileName.Substring(0, FileName.Length - 2), "*") ,這將是“somefile *” ... at至少我認為你正在尋找那個 ,而不是任何其他的。

這段代碼適合我:

        var file_path = @"K:\Work\IoCToy\IoCToy\image.jpg";
        var dir = Path.GetDirectoryName(file_path);
        var fileNameWithoutExtension = Path.GetFileNameWithoutExtension(file_path);
        var files = Directory.EnumerateFiles(dir, string.Format("{0}*", fileNameWithoutExtension), SearchOption.TopDirectoryOnly);

當然,您必須通過返回的文件名刪除文件。 我假設你的文件夾只包含圖像和以“image”子字符串開頭的縮略圖文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM