Hey,
bin leider wieder auf ein Problem gestoßen und zwar versuche ich eine .txt Datei auf mein Gerät zu speichern.
Das ist erstmal der Code, mit dem ich das versuche:
extends Activity habe ich, da ich sonst openFileOutput nicht aufrufen kann(oder doch?).
Im oben gezeigten Fall gibt mir LogCat folgendes aus:
Dann habe ich gelesen, dass man das aufgrund der Rechte von Android (Root etc.) über openFileOutput() machen muss, das funktioniert allerdings auch nicht, denn dann wirft er eine NullPointerException:
Jetzt ist meine Frage, ob es eine Directory gibt, auf die man über einen FileOutputStream zugreifen kann oder ist openFileOutput() die einzige Möglichkeit?
Auf die SDCard habe ich erstmal nicht vor zu speichern.
MFG
bin leider wieder auf ein Problem gestoßen und zwar versuche ich eine .txt Datei auf mein Gerät zu speichern.
Das ist erstmal der Code, mit dem ich das versuche:
Java:
public class Buchung extends Activity {
String intstr = Environment.getDataDirectory().toString();
String b = "savedReason.txt";
String filename = "savedBuchung.txt";
File folder = new File(intstr + "/com.mike.guthabencheck/");
File buchung = new File(folder.getAbsolutePath(), b);
String grund;
Float wert;
public Buchung(String reason, float value) {
grund = reason;
wert = value;
}
public void saveBuchungToTxt() {
//TODO Save Buchung with parameters
//TODO For Debug only______________________________________________________
System.out.println(intstr);
System.out.println(folder);
//_________________________________________________________________________
if (!folder.exists()) try {
boolean dircreated = folder.mkdir();
System.out.println(dircreated);
} catch (NullPointerException | SecurityException e) {
System.out.println(e);
}
try {
FileOutputStream f1 = new FileOutputStream(buchung, true);
PrintStream p = new PrintStream(f1);
p.print("Grund: " + grund + " | " + "Betrag: " + wert + "\n");
p.close();
//DEBUG
System.out.println("File created: " + buchung);
//
try {
f1.close();
} catch (IOException e) {
e.printStackTrace();
System.out.println(e);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
System.out.println(e);
}
}
extends Activity habe ich, da ich sonst openFileOutput nicht aufrufen kann(oder doch?).
Im oben gezeigten Fall gibt mir LogCat folgendes aus:
Java:
07-21 11:49:54.485 5107-5107/com.mike.guthabencheck W/System.err﹕ java.io.FileNotFoundException: /data/com.mike.guthabencheck/savedReason.txt: open failed: ENOENT (No such file or directory)
07-21 11:49:54.485 5107-5107/com.mike.guthabencheck W/System.err﹕ at libcore.io.IoBridge.open(IoBridge.java:456)
07-21 11:49:54.485 5107-5107/com.mike.guthabencheck W/System.err﹕ at java.io.FileOutputStream.<init>(FileOutputStream.java:87)
07-21 11:49:54.485 5107-5107/com.mike.guthabencheck W/System.err﹕ at com.mike.guthabencheck.Buchung.saveBuchungToTxt(Buchung.java:50)
07-21 11:49:54.485 5107-5107/com.mike.guthabencheck W/System.err﹕ at com.mike.guthabencheck.MainActivity.onActivityResult(MainActivity.java:173)
07-21 11:49:54.485 5107-5107/com.mike.guthabencheck W/System.err﹕ at android.app.Activity.dispatchActivityResult(Activity.java:6549)
07-21 11:49:54.485 5107-5107/com.mike.guthabencheck W/System.err﹕ at android.app.ActivityThread.deliverResults(ActivityThread.java:4056)
07-21 11:49:54.485 5107-5107/com.mike.guthabencheck W/System.err﹕ at android.app.ActivityThread.handleSendResult(ActivityThread.java:4103)
07-21 11:49:54.485 5107-5107/com.mike.guthabencheck W/System.err﹕ at android.app.ActivityThread.access$1400(ActivityThread.java:178)
07-21 11:49:54.485 5107-5107/com.mike.guthabencheck W/System.err﹕ at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1498)
07-21 11:49:54.485 5107-5107/com.mike.guthabencheck W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:102)
07-21 11:49:54.485 5107-5107/com.mike.guthabencheck W/System.err﹕ at android.os.Looper.loop(Looper.java:145)
07-21 11:49:54.485 5107-5107/com.mike.guthabencheck W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5944)
07-21 11:49:54.485 5107-5107/com.mike.guthabencheck W/System.err﹕ at java.lang.reflect.Method.invoke(Native Method)
07-21 11:49:54.485 5107-5107/com.mike.guthabencheck W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:372)
07-21 11:49:54.485 5107-5107/com.mike.guthabencheck W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
07-21 11:49:54.485 5107-5107/com.mike.guthabencheck W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
07-21 11:49:54.485 5107-5107/com.mike.guthabencheck W/System.err﹕ Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
07-21 11:49:54.485 5107-5107/com.mike.guthabencheck W/System.err﹕ at libcore.io.Posix.open(Native Method)
07-21 11:49:54.485 5107-5107/com.mike.guthabencheck W/System.err﹕ at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
07-21 11:49:54.485 5107-5107/com.mike.guthabencheck W/System.err﹕ at libcore.io.IoBridge.open(IoBridge.java:442)
07-21 11:49:54.485 5107-5107/com.mike.guthabencheck W/System.err﹕ ... 15 more
07-21 11:49:54.485 5107-5107/com.mike.guthabencheck I/System.out﹕ java.io.FileNotFoundException: /data/com.mike.guthabencheck/savedReason.txt: open failed: ENOENT (No such file or directory)
Dann habe ich gelesen, dass man das aufgrund der Rechte von Android (Root etc.) über openFileOutput() machen muss, das funktioniert allerdings auch nicht, denn dann wirft er eine NullPointerException:
Java:
07-21 12:04:40.435 12243-12243/com.mike.guthabencheck E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.mike.guthabencheck, PID: 12243
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=2, data=Intent { (has extras) }} to activity {com.mike.guthabencheck/com.mike.guthabencheck.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.FileOutputStream android.content.Context.openFileOutput(java.lang.String, int)' on a null object reference
at android.app.ActivityThread.deliverResults(ActivityThread.java:4060)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4103)
at android.app.ActivityThread.access$1400(ActivityThread.java:178)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1498)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5944)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.FileOutputStream android.content.Context.openFileOutput(java.lang.String, int)' on a null object reference
at android.content.ContextWrapper.openFileOutput(ContextWrapper.java:196)
at com.mike.guthabencheck.Buchung.saveBuchungToTxt(Buchung.java:54)
at com.mike.guthabencheck.MainActivity.onActivityResult(MainActivity.java:173)
at android.app.Activity.dispatchActivityResult(Activity.java:6549)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4056)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4103)
at android.app.ActivityThread.access$1400(ActivityThread.java:178)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1498)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5944)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
Jetzt ist meine Frage, ob es eine Directory gibt, auf die man über einen FileOutputStream zugreifen kann oder ist openFileOutput() die einzige Möglichkeit?
Auf die SDCard habe ich erstmal nicht vor zu speichern.
MFG
Zuletzt bearbeitet: