[Java] NullPointerException bei Dateizugriff unter Android

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von 010100111001, 14. August 2010 .

  1. 14. August 2010
    NullPointerException bei Dateizugriff unter Android

    Guten Abend die Herren!

    Ich versuche innerhalb einer Android-App eine Datei zu öffnen/anzulegen.

    Code:
    FileOutputStream outputStream = this.openFileOutput("file", MODE_PRIVATE);
    Zur Laufzeit der App wird eine NullPointerException an dieser Stelle geworfen.

    Eigentlich sollte wenn überhaupt eine FileNotFoundException geworfen werden.

    siehe:

    ApplicationContext


    Muss im Manifest eventuell noch eine permission für Dateizugriffe angegeben werden,
    bzw habt ihr sonst irgendwelche Ideen, durch was die Exception erzeugt wird?
     
  2. 14. August 2010
    AW: NullPointerException bei Dateizugriff unter Android

    Bist du dir zu 100% sicher, dass die Exception dort geworfen wird? Wenn ja, dann fang die Exception doch und schau mit .getMessage() und .getSteackTrace() wo genau der Fehler herrühren kann. Theoretisch darf die Methode keine NullPointerException werfen, aber vielleicht wirft auch "this." eine Exception.

    greez
     
  3. 14. August 2010
    AW: NullPointerException bei Dateizugriff unter Android

    hi

    diese zeile wirft bei mir keinen fehler
    sicher das du dich nicht in der zeile vertust?

    edit:
    das this ne nullpointer exception wirft ist ja eher unwahrscheinlich oder?
    this kann man ja nur in einer Klasse verwenden und wenn das objekt nicht exisitiert, kann die zeile auch nicht aufgerufen werden?
    und auf nen Objekt einer andren klasse kann this auch nicht zeigen, da die IDE dann einen fehler melden sollte, sofern für die klasse die methode nicht aufrufbar ist
    oder irre ich mich da?
     
  4. 14. August 2010
    AW: NullPointerException bei Dateizugriff unter Android

    Code:
     
     private void save(int id){
     logP.println("save");
     try {
     logP.println("1");
     FileOutputStream outputStream = this.openFileOutput("userids", MODE_PRIVATE);
     logP.println("2");
     outputStream.write(id);
     outputStream.flush();
     } catch (Exception e) {
     logP.println(e.toString());
     }
     }
    DBG-Konsole:

    //EDIT:

    Wenn ich .getMessage() benutze schmiert die VM ab..
     
  5. 15. August 2010
    AW: NullPointerException bei Dateizugriff unter Android

    Sehr seltsam, dass er .getMessage() nicht verarbeiten kann. Hast du es mal mit e.getStackTrace() oder e.printStackTrace() versucht?

    greez
     
  6. 15. August 2010
    AW: NullPointerException bei Dateizugriff unter Android

    Interessant ist denke ich nur die 5. Zeile:

    Code:
    08-14 23:20:43.621: INFO/__DBG__(1068): 1
    08-14 23:20:43.631: INFO/__DBG__(1068): java.lang.NullPointerException
    08-14 23:20:43.641: INFO/__DBG__(1068): [Ljava.lang.StackTraceElement;@4373f910
    08-14 23:20:43.651: WARN/System.err(1068): java.lang.NullPointerException
    08-14 23:20:43.661: WARN/System.err(1068): at android.content.ContextWrapper.openFileOutput(ContextWrapper.java:146)
    08-14 23:20:43.661: WARN/System.err(1068): at de.vhike2.UserId.save(UserId.java:55)
    08-14 23:20:43.671: WARN/System.err(1068): at de.vhike2.UserId.setUserId(UserId.java:41)
    08-14 23:20:43.694: WARN/System.err(1068): at de.vhike2.ServerConnection.onCreate(ServerConnection.java:81)
    08-14 23:20:43.702: WARN/System.err(1068): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
    08-14 23:20:43.702: WARN/System.err(1068): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2231)
    08-14 23:20:43.711: WARN/System.err(1068): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2284)
    08-14 23:20:43.722: WARN/System.err(1068): at android.app.ActivityThread.access$1800(ActivityThread.java:112)
    08-14 23:20:43.742: WARN/System.err(1068): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1692)
    08-14 23:20:43.752: WARN/System.err(1068): at android.os.Handler.dispatchMessage(Handler.java:99)
    08-14 23:20:43.762: WARN/System.err(1068): at android.os.Looper.loop(Looper.java:123)
    08-14 23:20:43.783: WARN/System.err(1068): at android.app.ActivityThread.main(ActivityThread.java:3948)
    08-14 23:20:43.803: WARN/System.err(1068): at java.lang.reflect.Method.invokeNative(Native Method)
    08-14 23:20:43.803: WARN/System.err(1068): at java.lang.reflect.Method.invoke(Method.java:521)
    08-14 23:20:43.803: WARN/System.err(1068): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
    08-14 23:20:43.803: WARN/System.err(1068): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
    08-14 23:20:43.803: WARN/System.err(1068): at dalvik.system.NativeStart.main(Native Method)
    
    Die 3. Zeile wird durch .toString() erzeugt.

    .printStackTrace() scheint auch zu funktionieren, nur weiss ich nicht, wo dort die Ausgabe ist.

    Falls irgendwelche sinnvolleren alternativen Vorschläge zu meinen Code-Snippet da sind nur her damit. Soll nur kurz und übersichtlich bleiben, also nicht mit Kanonen auf Spatzen usw usw ^^
     
  7. 15. August 2010
    AW: NullPointerException bei Dateizugriff unter Android

    hi,

    also ich hab deins mal in nen programm gepackt und funktioniert
    allerdings speichert er nur schwachsinn
    logisch
    denn
    du brauchst wohl noch nen OutputStreamWriter
    Wenn dein Verfahren allerdings Absicht ist, dann hab ich nix gesagt

    beispiel hier:
    anddev.org • View topic - Write to and read from a file

    schreiben und lesen ging damit bei mir wunderbar

    ob das bei dem problem hilft, weiss ich nicht
    vielleicht
     
  8. 15. August 2010
    AW: NullPointerException bei Dateizugriff unter Android

    Ok, das scheint zu gehen, danke!

    Weiss du wo die Datei im Fileexplorer auf dem Gerät dann zu finden ist?
     
  9. 15. August 2010
    AW: NullPointerException bei Dateizugriff unter Android

    hi, genau die selbe frage hat einer in diesem beitrag weiter unten gestellt
    darauf lautete die Antwort

    "/data/data/PACKAGE_NAME/files/deineDatei"
    aber du kannst ja selbst einen pfad angeben
     
  10. 15. August 2010
    AW: NullPointerException bei Dateizugriff unter Android

    normalerweise können apps immer in data/data/PAKETNAME.APPNAME/files daten speichern in databases sind dann datenbanken usw.
     
  11. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.