c#删除所有文件但不删除最后一个

c# delete all files but not last one

我正在尝试删除图像目录中的所有图像,除了最后加载到图片框中的图像并使用以下代码来实现此目的但仍然出现 文件正在使用异常

System.IO.DirectoryInfo di = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory + "\Images\");

            foreach (FileInfo file in di.GetFiles())
            {
                if(file.FullName!=pictureBoxLoadImage.ImageLocation)
                file.Delete();
            }

这应该可以,它会跳过文件中的最后一个文件并删除剩余的文件

  System.IO.DirectoryInfo di = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory + "\Images\");
  var files = di.GetFiles();
  files.AsParallel().Reverse().Skip(1).ForAll((f) => f.Delete());

我认为 ImageLocation 这里 returns 你的图像的相对路径,这将使你的 if 语句 returns true 始终保持一致图片,要解决此问题,您应该将 ImageLocation 返回的路径转换为绝对路径:

System.IO.DirectoryInfo di = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory + "\Images\");

foreach (FileInfo file in di.GetFiles())
{
   if(file.FullName!= Path.GetFullPath(pictureBoxLoadImage.ImageLocation))
      file.Delete();
}