2 Stimmen

File.Copy und WPF

Ich habe ein kleines Problem mit dem File.Copy Methode in WPF, mein Code ist sehr einfach und ich erhalte eine Ausnahme, wenn ich es ausführen,

Could not find a part of the path 'Images\37c31987-52ee-4804-8601-a7b9b4d439fd.png'.

donde Images ist ein relativer Ordner.

Hier ist mein Code, wie ich sagte einfach und der gleiche Code funktioniert gut in einer Konsolenanwendung, überhaupt kein Problem.

string filenamae = System.IO.Path.Combine(images, Guid.NewGuid().ToString() + System.IO.Path.GetExtension(imageFile)); ;
System.IO.File.Copy(imageFile, filenamae);
this.ImageLocation = string.Empty;

Wenn also jemand helfen kann, danke.

2voto

chris166 Punkte 4781

Existiert der Bilderordner? File.Copy legt ihn nicht automatisch an.

Wissen Sie, welches Ihr aktuelles Verzeichnis ist? Beim Öffnen/Speichern von Dateien kann sich das ändern. Es ist also immer sicherer, mit absoluten Pfaden zu arbeiten.

Machen Sie eine

Path.GetFullPath(filename)

und sehen, wohin das führt. Ist es die richtige Stelle?

2voto

user112889 Punkte 795

Wenn Sie den absoluten statt des relativen Pfads verwenden, funktioniert es dann?

1voto

Michael Maddox Punkte 11851

Bevor Sie auf eine Datei zugreifen, sollten Sie System.IO.File.Exists() aufrufen. Aus Ihrer Fehlerbeschreibung geht nicht hervor, ob die Ursprungsdatei vor dem Kopieren existiert oder nicht.

Wenn Sie keinen absoluten Pfad angeben, wird Ihr relativer Pfad oft von unerwarteten Stellen aus aufgelöst, normalerweise vom aktuellen Arbeitsverzeichnis des Prozesses. Der Aufruf dieser Methode kann Ihnen mitteilen, wo der Prozess gerade läuft:

System.IO.Directory.GetCurrentDirectory()

Sie sollten niemals Annahmen über das aktuelle Arbeitsverzeichnis eines laufenden Prozesses machen, da der Benutzer Ihr Programm von überall her starten könnte. Selbst wenn Sie denken, dass Sie immer die Kontrolle über das aktuelle Arbeitsverzeichnis haben, werden Sie überrascht sein, wie oft Sie sich irren.

0voto

Benjol Punkte 60397

Haben Sie einen Debugger? Warum fügen Sie nicht einen Haltepunkt ein und überprüfen die bei jedem Schritt verwendeten Werte?

Wenn das Dateisystem sagt "Datei kann nicht gefunden werden", würde ich mir nicht die Mühe machen, mit ihm zu streiten...

0voto

csensoft Punkte 323

Verwenden. \\ für das Dateipfadverzeichnis, wenn es sich um ein lokales Verzeichnis handelt. Wenn Ihre Datei im Netzwerkpfad existiert, verwenden Sie \\\\ (atfirst).. Damit es nach Netzlaufwerk suchen..

Danke

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X