2017-04-22 2 views
-1

Ich versuche, alle Bilder im Bildverzeichnis außer dem letzten Bild in Bildfeld geladen zu löschen und mit th Code im Anschluss an diesen achive aber noch Datei verwendet Ausnahme bekommenC# alle Dateien löschen, aber nicht zuletzt einen

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

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

hat Ihre if-Anweisung gibt „false“ für das letzte Bild? –

Antwort

1

Dies sollte, überspringt es die letzte Datei aus den Dateien und löschen sie die restlichen

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

danke dude, es funktioniert jetzt – virux99

+0

Warum brauchen Sie einen zweiten Anruf zu Reverse? – Steve

+0

@Steve nicht benötigt :) – Sajeetharan

0

ich denke ImageLocation hier gibt die relative Pfade Ihrer Bilder arbeiten, die Ihre if machen Anweisung gibt true immer noch für das letzte Bild, um dieses Problem beheben Sie den Pfad durch ImageLocation auf den absoluten Pfad zurück konvertieren sollten:

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(); 
} 
Verwandte Themen