Fehler: FileOutputStream kann nicht initialisiert werden
Ich versuche, führen Sie dieses Stück code, der in meiner onCreate Methode, wie ein Erster test in das schreiben von privaten Daten für meine app zu nutzen. Dieser code ist direkt aus dem Android-SDK development guide, der sich hier
String FILENAME = "hello_file";
String string = "hello world!";
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();
Dieser code jedoch geben Sie mir Fehler für die 3 Zeilen code an der Unterseite. Der Fehler ist eine nicht behandelte Ausnahme. Die vorgeschlagene quick-fix ist die folgende:
String FILENAME = "hello_file";
String string = "hello world!";
FileOutputStream fos;
try {
fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
} catch (FileNotFoundException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
try {
fos.write(string.getBytes());
} catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
try {
fos.close();
} catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
Aber danach bekomme ich eine Fehlermeldung für die beiden unteren Zeilen die Zustände, die fos kann nicht initialisiert werden. Wie kann ich diesen code beheben?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ersetzen
mit
Ja, das problem hier ist, dass wenn Sie eine FileNotFoundException Sie versuchen, drucken Sie die Ausnahme und weiter, aber in diesem Fall, die fos, die variable wäre nie ein Wert zugewiesen, da der "openFileOutput" nennen würde nicht abgeschlossen haben. Das ist gut, weil in dem Fall, wenn Sie nicht in der Lage, eine Datei zu öffnen, die Sie nicht wollen, um weiter zu versuchen Sie zu schreiben, um die Datei, die Sie nicht öffnen.
Da eine FileNotFoundException eine IOException, könnte man vereinfacht so:
In diesem Fall, die erste Sache, die wirft eine exception bewirkt, dass der stack-trace zu erhalten gedruckt, und Sie überspringen alle nachfolgenden Operationen in den rest der try {} - block.
Das problem mit Zement Antwort ist, dass, obwohl es wird durch die compiler-Fehlermeldung, wenn der erste block immer wirft die Ausnahme, der zweite block wird Ihnen eine NullPointerException.
asset
Ordner und dann geschrieben, die Datei mitFileOutputStream
. Meine Frage ist, welche den Pfad der Datei gespeichertFileOutputStream
.