Mit dem folgenden Code versuche ich eine Datei zu überschreiben, wenn sie existiert. Gelegentlich wirft es IOException. Wie kann ich dieses Problem beheben?'File.Copy' überschreibt keine Datei
File.Copy(filePath, newPath);
Mit dem folgenden Code versuche ich eine Datei zu überschreiben, wenn sie existiert. Gelegentlich wirft es IOException. Wie kann ich dieses Problem beheben?'File.Copy' überschreibt keine Datei
File.Copy(filePath, newPath);
Verwenden
File.Copy(filePath, newPath, true);
Der dritte Parameter überschreiben, also, wenn Sie es auf true die Zieldatei gesetzt werden überschrieben.
nennen Dann the overload
File.Copy(filePath, newPath, true);
Dann wird die andere File.Copy(string, string, boolean)
verwenden. Der dritte Parameter gibt an, ob die Zieldatei überschrieben werden soll, falls sie existiert (true
wenn Sie überschreiben möchten, andernfalls false
).
Aber was haben Sie erwartet? Wenn die Funktion so entworfen wurde, dass sie ausgelöst wird, wenn die Zieldatei existiert, müssen Sie einen Weg finden, um dieses Problem zu umgehen. Also entweder:
File.Copy(string, string)
, der die Zieldatei für Sie löscht, falls sie existiert.Von MSDN können Sie tun:
File.Copy(filePath, newPath, true);
eine Überlastung dieser Funktion gibt es, die einen dritten Parameter enthält. Dieser Parameter wird "Überschreiben" genannt. Wenn Sie true
übergeben, wird die Datei überschrieben, solange die Datei nicht schreibgeschützt ist.
sehr guter Punkt mit dem Read-Only-Attribut. – JohnB
File.Copy(filePath, newPath, bool overwrite)
tut es.
Dies kann Ihnen helfen:
ich diese verwenden und es funktioniert,
File.Copy(src,des,true); //(string source, string destination, bool overwrite)
Referenz (MSDN): File.Copy Method (String, String, Boolean)
für "floating bools" Ich habe die Regel folgen immer zu verwenden, sie als benannte Parameter für Klarheit File.Copy (filePath, newPath, überschreiben: wahr); – t3dodson