[ERLEDIGT] (JSON-)Datei speichern

FalkeNr1

FalkeNr1

Neues Mitglied
3
Hi,
mein Ziel ist einfach ein paar Daten so zu speichern, dass ich sie nach einem Neustart der App wieder abgerufen werden können. Sollte prinzipiell kein Problem darstellen und ich weiß, dass ich es schon mal gemacht habe....
Mein Problem gerade ist einfach, dass meine App weder eine Datei erstellt, noch ein Verzeichnis anlegt?
Ich habe es bereits auf verschiedenen Wegen versucht, bei keinem wird eine Datei erstellt.

Hier mal der Versuch mit einem .json File:
Code:
private void saveJSON() {
        JSONObject json = makeJSONObject();
        try {

            Writer output = null;
            File file = new File(getFilesDir() + "/" + FILENAME + ".json");
            output = new BufferedWriter(new FileWriter(file));
            output.write(json.toString());
            output.close();
            Log.d("SAVE", "SAVED: " + getFilesDir());
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    private JSONObject makeJSONObject() {
        JSONObject json = new JSONObject();
        try {
            json.put("Test1", "Test");
            json.put("Test2", 1);
        } catch(JSONException e) {
            e.printStackTrace();
        }
        return json;
    }

Danke schon mal für eure Antworten!
Falke
 
Hallo Falke
Mein Problem gerade ist einfach, dass meine App weder eine Datei erstellt, noch ein Verzeichnis anlegt?

Das ist nicht ganz richtig , denn es existiert der Pfad : /data/[PACKAGENAME]
Wenn du die entsprechenden Permissions gesetzt hast , kannst du auch auf Diesen zugreiffen und schreiben.

Z.b. auf : /data/[PACKAGENAME]/files mit

File appFilesDir = getExternalFilesDir(null);
 
  • Danke
Reaktionen: FalkeNr1
Mh... Mit getExternalFilesDir() greife ich doch aber auf den externen Speicher zu, also z.B. die SD-Karte. Ich würde die Datei allerdings gerne intern speichern, da ja nicht immer ein externer Speicher vorhanden ist. Beim externen Speichern wüsste ich auch, dass ich dann im Manifest die Permission dafür festlegen müsste. Für das interne habe ich allerdings keine Permission gefunden?
 
Hallo Falke,

Mit getExternalFilesDir() greife ich doch aber auf den externen Speicher zu, also z.B. die SD-Karte.

Wie kommst du darauf ? - Schau dir mal bitte die Doku dazu an
Saving Files | Android Developers
Context | Android Developers


Für das interne habe ich allerdings keine Permission gefunden?
Die Permissions haben nichts alleinig mit der SD zu tun
User Interface | Android Developers

EXTERN bedeutet NICHT die SD Karte, sondern die gemounteten, verfügbaren Datenträger !
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: FalkeNr1
Okay, dann habe ich
Returns the absolute path to the directory on the primary shared/external storage device where the application can place persistent files it owns.
falsch verstanden.
Wegen den Permissions:
Klar sind die nicht NUR für die SD. Meinte bloß, dass ich beim recherchieren etwas wie die Permission "WRITE/READ_EXTERNAL_STORAGE" nicht für den "INTERNAL" Storage gefunden habe.

Mit getExternalFilesDir(null) funktioniert es jetzt. Danke :)
Er speichert im internen Speicher eine Datei ab.
Code:
private void saveFavorite() {
        JSONObject json = makeJSONObject();
        try {

            Writer output = null;
            File file = new File(getExternalFilesDir(null) + "/" + FILENAME + ".json");
            output = new BufferedWriter(new FileWriter(file));
            output.write(json.toString());
            output.close();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    private JSONObject makeJSONObject() {
        JSONObject json = new JSONObject();
        try {
            json.put("Test1", "Test");
            json.put("Test2", 1);
        } catch(JSONException e) {
            e.printStackTrace();
        }
        return json;
    }
 
  • Danke
Reaktionen: swa00
Ich gebe zu ,die Bezeichnung ist ein wenig verwirrend :)

Dir viel Erfolg !
 
Danke!
 

Ähnliche Themen

A
Antworten
10
Aufrufe
1.867
swa00
swa00
B
Antworten
6
Aufrufe
1.016
jogimuc
J
S
Antworten
33
Aufrufe
2.540
Sempervivum
S
Zurück
Oben Unten