Unterschied zwischen File.Copy und File.Move

8

Heutzutage habe ich es mit einer kleinen Anwendung zu tun, die die kompakten Datenbankdateien von mssql auf einem iss-Server aktualisiert.

Ich habe es vorgezogen, SSIS zu verwenden, um den Fluss zu organisieren. Seit ein paar Tagen hat es gut funktioniert, aber dann fing an, Fehler zu geben.

In SSIS habe ich die Operation "File System Task" s "Move File" verwendet, um generierte Dateien aus einem Ordner in den freigegebenen Ordner des iss-Servers zu verschieben. Schlägt dies fehl, versucht es im Falle einer gesperrten Datei später. Aber ich habe gesehen, dass manchmal die Dateien im Zielordner zu verschwinden begannen.

Dann habe ich beschlossen, benutzerdefinierten Code zu schreiben. Ich habe die "Dateisystemaufgabe" entfernt und stattdessen eine "Skriptaufgabe" eingefügt. Und schreibe ein paar Zeilen hinein.

%Vor%

Es hat gut funktioniert. Aber ich habe es versucht, indem ich die Zieldatei gesperrt habe. Ich habe die Zieldatei in Sql Server Management Studio verbunden (es ist eine SDF-Datei). Und überraschend funktioniert es auch.

Und ich habe es vom Betriebssystem aus versucht, indem ich die Quelldatei kopiert und an das Ziel eingefügt habe. Windows 7 fragt mich, ob ich es überschreiben möchte und ich sage ja und überschrieb die Datei (kopieren und ersetzen), die ich mit einem anderen Prozess verwende, keine Warnung, kein Fehler. Aber wenn ich versuche, sie umzubenennen oder zu löschen, kann ich das nicht tun. Oder wenn ich es ausschneiden und einfügen möchte (Move and Replace) heißt es "Sie benötigen die Erlaubnis, diese Aktion auszuführen".

Wie ich verstanden habe, sind "Kopieren, Löschen" und "Verschieben" völlig unterschiedliche Dinge. Und ich kann immer noch nicht verstehen, wie ich eine gesperrte Datei überschreiben kann.

Irgendwelche Ideen?

    
fkucuk 22.07.2011, 12:55
quelle

1 Antwort

5

File.Move-Methode kann verwendet werden, um die Datei von einem Pfad zu einem anderen zu verschieben. Diese Methode funktioniert über Datenträgervolumes hinweg und löst keine Ausnahme aus, wenn Quelle und Ziel identisch sind.

Sie können die Move-Methode nicht verwenden, um eine vorhandene Datei zu überschreiben. Wenn Sie versuchen, eine Datei durch Verschieben einer Datei mit demselben Namen in dieses Verzeichnis zu ersetzen, erhalten Sie eine IOException. Um dies zu umgehen, können Sie die Kombination von Methoden zum Kopieren und Löschen verwenden

Antwort oder Signal von: Unterschied zwischen dem Kopieren von Dateien / löschen und verschieben

    
Pranay Rana 22.07.2011 13:00
quelle

Tags und Links