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

时间:2017-04-22 06:40:04

标签: c# .net file-handling

我正在尝试删除图片目录中的所有图片,除了图片框中加载的最后一张图片,并使用以下代码来实现此功能但仍然获得正在使用的文件

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

我认为此处ImageLocation会返回您图片的相对路径,这将使您的if语句始终返回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();
}