繁体   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