IOException ("Datei oder Verzeichnis existiert bereits") beim Versuch, ein Verzeichnis zu erstellen
Ich habe ein komisches problem in unserem C# - Projekt, welches Auftritt, während Sie versuchen, ein Verzeichnis zu erstellen über die IronPython-Skript. Dies ist der code:
targetTemplateDirectory = Path.Combine(Data, "Templates\\CheckedReports")
if not Directory.Exists(targetTemplateDirectory):
Directory.CreateDirectory(targetTemplateDirectory)
Problem ist IOException
sagt mir, dass es nicht möglich ist, um den Ordner zu erstellen "H:\ProductName\Data\Templates\CheckedReports"
weil Sie eine Datei oder ein Verzeichnis mit demselben Namen bereits vorhanden ist.
Laut MSDN die Methode Directory.CreateDirectory()
löst keine Ausnahme aus, wenn das Verzeichnis bereits vorhanden ist.
Ich weiß, dass eine Datei mit dem Namen "CheckedReports
" kann der Grund für diese Ausnahme ist, aber es ist sehr, sehr unwahrscheinlich, dass der Kunde erzeugt hat, die Datei manuell. Zusätzlich zu, dass es keine code-Zeile, die enthält das Wort "CheckedReports
" (neben den genannten Skript). Darüber hinaus ist die Anwendung, die verwendet wird, um ein paar tausend Kunden, wird das Skript ausgeführt, auf jeder Maschine und nur einem Kunden berichtet, dieses Problem.
Gibt es irgendeine Möglichkeit für diese Ausnahme auftreten, andere als eine Datei mit dem gleichen Namen? Vielleicht etwas im Zusammenhang mit Berechtigungen, auf Wechselmedien oder Netzlaufwerke?
- "aber es ist sehr, sehr unwahrscheinlich" ... doch, angesichts der verfügbaren Informationen, es ist der wahrscheinlichste Grund. Kann man einfach überprüfen (oder lassen Sie die Kunden-check), wenn eine Datei mit diesem Namen existiert?
- Ich wünschte, ich könnte :). Die version der Anwendung, die dieser Kunde verwendet hat, hat einen Fehler-reporting-system das nicht zulässt, dass Sie keine persönlichen oder Kontaktinformationen. Wir geändert, dass in einem späteren update. So haben wir nur eine Nachricht mit den stack-trace und eine Computer-id, sonst nichts.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hatten wir die gleichen, und in unserem Fall war es ziemlich klar, es war ein Berechtigungsproblem. Wir erwarten, dass die dokumentierten UnauthorizedAccessException, aber das ist nicht das, was wir haben.
In dem Stapel, die wir haben-Verzeichnis.CreateDirectory Aufruf von Directory.InternalCreateDirectory.
Drin gibt es diese Notiz:
Gibt es Hinweise darüber, dass tiefer in die Tatsache, der code kann versuchen, das Verzeichnis zu erstellen, der schon da ist, wenn er es nicht sehen konnte.
Obwohl es wäre etwas übertrieben zu haben und diese nur für einen Benutzer sollte es möglich sein zu überprüfen, ob eine Datei mit diesem Namen existiert.
Wohl dies würde das Problem auch lösen, WENN natürlich die I/O-Ausnahme verursacht wurde, die durch eine Datei mit demselben Namen. Wenn es wäre, verursacht durch die Benutzer, da die "Netzwerk-name nicht bekannt ist", dann würde ich keine Ahnung haben, entweder.