2010-02-04 9 views
5

Ich erstelle eine Datei mit File.WriteAllText und kopieren Sie die gleiche Datei in ein anderes Verzeichnis mit File.Copy Methode. Aus irgendeinem Grund erstellt es jedoch keine Datei im Quellverzeichnis, sondern kopiert sie in das Zielverzeichnis.File.WriteAllText und File.Copy Problem

Was könnte das Problem sein? Lass es mich wissen, bitte.

File.WriteAllText(sourceFilePath, Contents.ToString()); 
File.Copy(sourceFilePath, destFilePath); 
+0

Ist dieses Verhalten konsistent mit anderen Pfaden? –

Antwort

0

Sind die Methodenaufrufe wie in Ihrem Beispiel gleichzeitig?

Wenn ja, könnten Sie File.WriteAllText zweimal aufrufen, um das Problem zu umgehen, obwohl ich nicht weiß, warum es auftritt.

Sie könnten eine File.Exists-Prüfung vor der Kopie durchführen oder vielleicht einen Thread.Sleep (100) versuchen und feststellen, dass es sich um ein Problem mit der Platten-E/A handelt.

7

Nun, Sie wissen in der Tat, dass die Datei tatsächlich erstellt wurde, sonst File.Copy() löst eine Ausnahme aus. Und File.Copy() löscht niemals die Quelldatei, wie es File.Move() tut.

Die einfachste Erklärung ist, dass die Datei gerade in einem Ordner erstellt wird, den Sie nicht erwartet haben. Das ist üblich, wenn sourceFilePath kein absoluter Pfad ist. Dies geschieht häufig, wenn Sie OpenFileDialog mit der Eigenschaft RestoreDirectory auf false festgelegt haben. Beispielsweise.

Vermeiden Sie dies, indem Sie immer absolute Pfade verwenden. Environment.GetFolderPath() ist dein Freund.

+0

Erstellte dieses Mal eine Datei, schreibt aber den alten Inhalt in die Textdatei. File.Copy funktioniert gut mit dem Zielverzeichnis. – nav100

+0

Es schreibt alte Inhalte? Oder sehen Sie sich eine alte Version der Datei an? Weitere Hinweise darauf, dass die Datei in einem anderen Verzeichnis erstellt wird. –

0

In welchen Ordner schreiben Sie? Könnte dies ein Vista/7-Ordnervirtualisierungsproblem sein?

Wenn Sie uns den tatsächlichen Code zeigen könnten, den Sie verwenden, wäre es hilfreich.