openFileOutput mit MODE_APPEND

  • 2 Antworten
  • Neuester Beitrag
Diskutiere openFileOutput mit MODE_APPEND im Android App Entwicklung im Bereich Betriebssysteme & Apps.
N

note3

Ambitioniertes Mitglied
Vielleicht liest jemand an diesem verregneten Feiertag hier noch mit :)

In eine Datei schreiben geht, etwas anhängen aber nicht.
Der folgende code steht in der MainActivity:
Code:
        File file1 = new File(Environment.getExternalStorageDirectory(), "/esMap/test.txt");

        buffer="zeile 1\nzeile 2";
        FileOutputStream fos;
        byte[] data = new String(buffer).getBytes();
        try {  fos  = new FileOutputStream(file1);
               fos.write(data);
               fos.flush();
               fos.close();
        } 
        catch(IOException e) { e.printStackTrace(); }

        // bis hierher ok, d.h. "zeile 1\nzeile 2" wird geschrieben
        // der folgende buffer wird aber nicht angehängt (Lösung aus einem Buch)

        buffer="zeile 3\nzeile 4";
        FileOutputStream fosA;
        OutputStreamWriter osw=null;
        try {  fosA=getApplicationContext().openFileOutput(file1.getName(), Context.MODE_APPEND);
        // alternativ nur
        // fosA=openFileOutput(file1.getName(), MODE_APPEND);
               osw = new OutputStreamWriter(fosA);
               osw.write(buffer);
               osw.flush();
               osw.close();
        } 
        catch(IOException e) { e.printStackTrace(); }
Wo liegt das faule Osterei?

Mit Gruß
E.S.
 
A

amfa

Experte
file1.getName() dürfte nur test.txt zurückgeben ohne den Pfad.
Somit schreibst du Zeile 3 und 4 in eine andere Datei
 
N

note3

Ambitioniertes Mitglied
amfa schrieb:
file1.getName() dürfte nur test.txt zurückgeben ohne den Pfad.
Somit schreibst du Zeile 3 und 4 in eine andere Datei
Das stimmt, aber man kann bei openFileOutput keinen Pfad angeben.
Wo die Datei im Speicher landet konnte ich nicht herazsfinden.

Offensichtlich ist der Weg über openFileOutput (Buch- und Internetbeispiele) veraltet.
Ich habe es jetzt mit
Code:
  BufferedWriter bW;
  bW = new BufferedWriter(new FileWriter(root, true));
gemacht und das geht

Mit Gruß
E.S.