Ich versuche, einige Dateien in einem Verzeichnis aus einem separaten Thread zu löschen, aber manchmal funktioniert das Löschen nicht.C# File.Delete funktioniert nicht
DirectoryInfo dirInfo = new DirectoryInfo(Directory.GetCurrentDirectory());
FileInfo[] fileNames = dirInfo.GetFiles("*.*");
foreach (FileInfo fileName in fileNames)
{
string destinationFilename = cncDestinationDirectory + @"\" + dirInfo.Name + @"\" + fileName.Name;
if (File.Exists(destinationFilename))
File.Delete(destinationFilename);
File.Move(fileName.FullName, destinationFilename);
}
Mein Ziel ist es, einige Dateien in einem Verzeichnis zu bewegen, aber, wie ich weiß, dass die File.Move
funktioniert nicht, wenn die Zieldatei bereits vorhanden ist. Also, ich überprüfe, ob die Datei existiert und wenn es wahr ist, lösche ich diese Datei und gehe dann zum Original.
Die File.Delete
verursachen auch ein vorzeitiges Verlassen der Funktion. Das aktuelle Verzeichnis ist nicht derselbe Ordner, in dem die ausführbare Datei ausgeführt wird, da ich sie zuvor in einem anderen Ordner eingerichtet habe.
Wie kann ich diesen Fehler vermeiden? Und verschiebe die Dateien immer noch in das Zielverzeichnis?
"vorzeitig beenden?" Was bedeutet das? Erhalten Sie eine Ausnahme? – DavidG
Ich sehe keine Frage ... – fredrik
Sie müssen entscheiden, wie Sie mit Fehlerfällen umgehen, die Sie in Ihrer Frage vorschlagen. Es ist durchaus möglich, dass zwischen dem Überprüfen der Datei und dem anschließenden Löschen die Datei von einem anderen Prozess geöffnet wurde. Sie können eine Ausnahme um das File.Delete herum abfangen und dann die Ursprungsdatei nicht verschieben, wenn sie ausgelöst wird, aber Sie werden mit Dateien enden, die nicht verschoben wurden. Du kannst nichts dagegen tun. – Neil