Erkennen zugrunde liegende Ursache für java.io.FileNotFoundException
FileNotFoundException geworfen wird, auf allen möglichen Anlässen - nicht unbedingt nur, wenn der Dateiname ungültig ist, aber auch, wenn e. g. Berechtigungen nicht erlauben, eine Datei zu erstellen oder zu Lesen:
java.io.FileNotFoundException: \\server\share\directory\test.csv (Anmeldung fehlgeschlagen: unbekannter Benutzername oder falsches Kennwort)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
at java.io.FileOutputStream.<init>(FileOutputStream.java:131)
at java.io.FileWriter.<init>(FileWriter.java:73)
Das obige Beispiel zeigt eine Deutsche Windows beschweren, Ungültiger Benutzername oder ungültiges Kennwort.
Gibt es eine Möglichkeit kurze Analyse der Ausnahmen-Nachricht, um ein wenig feinere Informationen auf warum genau die Ausnahme aufgetreten ist? Problem bei message-parsing ist, dass an verschiedenen Schauplätzen der Nachrichten ist unterschiedlich.
InformationsquelleAutor Daniel Schneller | 2009-11-02
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Tun das Kontrollkästchen für die Datei-Existenz/Lesen-schreiben-Berechtigungen, die sich vor dem erstellen
FileOutputStream
.Beachten Sie, dass manchmal Sie haben zu prüfen, die lese - /schreib-Berechtigungen auf einem übergeordneten Sie die Ziel-Datei, wenn Sie müssen zum erstellen einer neuen Datei.
Seien Sie vorsichtig. Es gibt anscheinend einige bugs, die beeinflussen können, die Rückkehr Ergebnis dieser Methoden. Sie erhalten möglicherweise falsche Ergebnisse, wenn Ihr Verzeichnis ist ein custom-oder system-Verzeichnis oder wenn es auf bestimmte Arten von Netzwerk-share.
Anscheinend habe ich nur etwas vom bugs.sun.com/bugdatabase/view_bug.do?bug_id=4939819, die wird Ihnen sagen, dass home-Verzeichnis des Benutzers (Dokumente und Einstellungen...) unter Windows ist nicht beschreibbar. Problemumgehung: Versuchen Sie, erstellen einer temp-Datei in den übergeordneten Ordner und löschen Sie es sofort danach, wenn erfolgreich. Wenn eine IOException geworfen wird, die Sie wirklich nicht schreiben können.
Ist ein Problem mit Berechtigungen möglich, wenn ich führe diese als administrator aus Intellij?
InformationsquelleAutor Alexander Pogrebnyak
Möchten Sie vielleicht betrachten Sie die Eigenschaften der Datei, die mit der java.io.Datei Objekt, bevor Sie versuchen, die Datei zu Lesen. Es gibt eine canRead Methode, die Sie verwenden können, um zu bestimmen, ob oder ob nicht der Benutzer die Datei Lesen können.
InformationsquelleAutor Chris Gow
Ein Ansatz ist der Blick auf die tatsächliche Art der Ausnahme: wie Sie sehen können aus die docs, es gibt eine Menge von Unterklassen, bieten finer-grained information.
Aber Sie wahrscheinlich wird nicht weit kommen. Wie bei den meisten checked exceptions, es ist normalerweise besser, Protokoll/Bericht die Ausnahme und bitten Sie den Benutzer für die Wahlen auf, wie man es richtig.
Mein Fehler - ich Las IOException. Leider, Java-Ausnahmen haben nur selten zusätzliche Informationen (wie eine POSIX-Fehlercode), und in vielen Fällen werden gestreckt, um den Deckel Bedingungen, haben wenig Beziehung zu Ihren Namen (manchmal aufgrund der Zuweisung der POSIX-code zur exception-Typ, manchmal denke ich, wegen Faulheit).
InformationsquelleAutor kdgregory