2017-04-22 58 views
-1

我试图删除图像目录中的所有图像除了图片框加载的最后一个图像,并使用日以下代码来实现这一目标,但仍然得到文件中使用的例外C#中删除所有文件,但不会持续一个

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

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

没有你的if语句的最后一个影像返回“假”? –

回答

1

这应该工作,它跳过从文件中的最后一个文件,并删除其余

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

感谢兄弟,它现在的工作 – virux99

+0

为什么你需要第二次电话拨打反向? – Steve

+0

@Steve不需要:) – Sajeetharan

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(); 
} 
相关问题