2012-08-28 5 views
5

Ich möchte in eine Datei schreiben und dann daraus lesen. Bei der Verwendung der Methode openFileOutput (.., ..) bekomme ich, dass diese Methode nicht definiert ist, da es sich um eine abstrakte Methode handelt. Dann versuchte ich es mit der Übergabe des Kontexts mit getBaseContext(); und Warnung war aus, aber ich bekomme nicht das Ergebnis beim Lesen der Ausgabe. Ich habe auch versucht, den Kontext als Parameter im Konstruktor zu übergeben, aber das hat auch nicht geholfen. Ich möchte statische Methoden schreiben, so dass ich die Klasse nicht jedes Mal instanziieren muss und statisch nicht der Grund ist, weil ich es auch ohne es versucht habe. Der Code ist Snippet ist unten angegeben.Schreiben und Lesen von String zu einem internen Speicher in Android

Muss ich auch bei Verwendung des internen Speichers einen Pfad angeben? Ist eine Berechtigung zum Schreiben von Dateien in den internen Speicher erforderlich? (Ich habe die Erlaubnis zum Schreiben auf externen Speicher enthalten)

public static void write (String filename,Context c,String string) throws IOException{ 
    try { 
     FileOutputStream fos = c.openFileOutput(filename, Context.MODE_PRIVATE); 
     fos.write(string.getBytes()); 
     fos.close(); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 


public static String read (String filename,Context c) throws IOException{ 

    StringBuffer buffer = new StringBuffer(); 

    FileInputStream fis = c.openFileInput(filename); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(fis)); 
    if (fis!=null) {        
     while ((Read = reader.readLine()) != null) {  
      buffer.append(Read + "\n"); 
     }    
    }  
    fis.close(); 
    return Read; 
} 
+2

Sie möchten buffer.toString() in read() zurückgeben! (BTW, "String Read;" scheint in Ihrem Code-Snippet zu fehlen, Sie sollten jedoch keine nicht statischen Großbuchstaben verwenden.) – Stefan

+0

Wie kann ich das tun? Ein Code-Snippet wird möglicherweise helfen. – Atinder

+4

Geben Sie puffer.toString() als letzte Zeile in Ihrer read() -Methode zurück. Und füge "String Read" hinzu. Irgendwo vor Ihrer While-Schleife, um die Variable "Read" zu definieren. Und Sie sollten Kleinbuchstaben, z. String-Linie; while ((line = reader.readLine())! = null) buffer.append (Zeile + "\ n"); – Stefan

Antwort

2

zurück buffer.toString() in Lese-Methode löste das Problem. Danke Stefan.

+0

Entschuldigung dafür, dass dieser Thread nach langer Zeit wieder aktiv ist. Ich habe eine Datei aus dem Ordner "asset" gelesen und dann diese Datei mit "FileOutputStream" geschrieben. Meine Frage ist, was der Pfad der Datei von 'FileOutputStream' gespeichert hat. –

Verwandte Themen