C# 试图从名称匹配\包含特定字符串的单个目录中删除多个文件

C# 试图从名称匹配\包含特定字符串的单个目录中删除多个文件,c#,asp.net,C#,Asp.net,我想删除图像文件。文件名为somefile.jpg和somefile\u t.jpg,末尾带有\u t的文件是缩略图。使用此删除操作,我希望同时删除缩略图和原始图像 代码一直工作到foreach循环,其中GetFiles方法不返回任何内容。 string.Substring操作仅成功返回不带扩展名和的文件名,例如:somefile 我要删除的文件名中没有无效字符。 代码对我来说很好,我唯一能想到的是我不知何故没有使用searchpattern 功能正常 filesource = "~/somed

我想删除图像文件。文件名为
somefile.jpg
somefile\u t.jpg
,末尾带有
\u t
的文件是缩略图。使用此删除操作,我希望同时删除缩略图和原始图像

代码一直工作到
foreach
循环,其中
GetFiles
方法不返回任何内容。 string.Substring操作仅成功返回不带扩展名和
的文件名,例如:
somefile

我要删除的文件名中没有无效字符。 代码对我来说很好,我唯一能想到的是我不知何故没有使用searchpattern 功能正常

filesource = "~/somedir/somefile_t.jpg"


您需要确保第一个参数searchPattern是正确的。在本例中,您提供的是
FileName.Substring(0,FileName.Length-2)
,即“somefile”。该方法不返回任何内容的原因是,您正在查找字面上命名为somefile的文件。您要做的是在基本文件名之外使用通配符:
String.Concat(filename.Substring(0,filename.Length-2),“*”
,即“somefile*”。。。至少我认为您正在寻找与其他任何搜索模式不同的搜索模式。

此代码对我很有用:

        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”子字符串开头的缩略图文件。

感谢这一点,我想知道为什么它不能与FileName.substring(0,FileName.Length-2)+“*”这样的字符串一起工作,但在使用字符串.Concat时却可以?可能不会计算连接的字符串,只计算+之前的部分,它将与
FileName.Substring(0,FileName.Length-2)+“*”
一起使用,因为
string.Concat(…)
就是这样做的,但原始代码没有通配符。
        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);