Die Referenz zum Android-Entwickler ( diese Seite ) sagt:
%Vor%Aber am Anfang steht:
Öffnen Sie eine private Datei, die dem Anwendungspaket dieses Context zum Schreiben zugeordnet ist. Erstellt die Datei, falls sie nicht bereits existiert.
Wenn dies der Fall ist, Warum würde die FileNotFoundException jemals ausgelöst werden?
Ich möchte nur sicherstellen, dass ich alle Fälle richtig handhabe. Ich benutze die Standardfunktionalität, also kann ich sie einfach in einen try..catch
-Block mit nichts im catch
-Block einbinden, da es nicht möglich ist, dass ein FileNotFoundException
jemals in die Standardfunktionalität geworfen wird?
Bearbeiten: Beispiel für 'Standardfunktionalität':
%Vor%Der ContextImpl.openFileOutput ist wie folgt auf ICS implementiert:
%Vor%Die Funktion makeFileName stellt sicher, dass Sie hier keine Verzeichnisstruktur angeben können:
%Vor%Obwohl dies die Fnf-Ausnahme nicht zu sehen scheint, können Sie jedoch sehen, dass sie nicht threadsicher ist, sodass f.getParentFile () diese Ausnahme möglicherweise noch auslöst, wenn ein anderer Thread entfernt wird das Verzeichnis /data/data/com.yourpkg.name/files.
In meinem Fall war der Grund, dass der Name der Datei nicht OK war. Offensichtlich sind Doppelpunkte im Dateinamen nicht erwünscht.
funktioniert nicht (- & gt; FileNotFoundException):
%Vor%Arbeiten:
%Vor%(Differenz ist das "." anstelle von ":" zwischen HH, mm und ss im SimpleDateFormat)
Die häufigste Ursache ist, dass ein intermediäres Verzeichnis nicht existiert. FileOutputStream
erstellt diese nicht. Es kann auch ein Berechtigungsproblem sein: Der gesamte Pfad existiert, aber Sie haben keine Erstellungsberechtigungen im endgültigen Verzeichnis oder überschreiben Berechtigungen für die tatsächliche Datei, falls sie bereits existiert.
Tags und Links java android java-io android-context android-file