2012-08-28 14 views
5

Voglio scrivere in un file e quindi leggere da esso. Durante l'utilizzo del metodo openFileOutput (.., ..) ho capito che questo metodo non è definito in quanto è un metodo astratto. Poi l'ho provato passando il contesto usando getBaseContext(); e l'avviso era disattivato, ma non ho ottenuto il risultato leggendo l'output. Ho anche provato a passare il contesto come parametro nel costruttore, ma anche questo non ha aiutato. Voglio scrivere metodi statici in modo da non dover istanziare la classe ogni volta e la staticità non è la ragione perché ho provato anche senza di essa. Il codice è snippet è indicato di seguito.Scrittura e lettura di una stringa in una memoria interna in Android

Devo specificare un percorso anche durante l'utilizzo della memoria interna? Esiste un'autorizzazione necessaria per scrivere file nella memoria interna? (Ho incluso il permesso di scrivere su storage esterno)

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

Si desidera restituire buffer.toString() in read()! (BTW, "String Read;" sembra mancare nel tuo snippet di codice, tuttavia non dovresti usare variabili maiuscole maiuscole.) – Stefan

+0

Quindi, come posso farlo? Uno snippet di codice sarà probabilmente di aiuto. – Atinder

+4

return buffer.toString() come ultima riga nel metodo read(). E aggiungi "Leggi stringa;" da qualche parte prima del tuo ciclo while per definire la variabile "Leggi". E dovresti usare lettere minuscole, ad es. Linea di stringa; while ((line = reader.readLine())! = null) buffer.append (line + "\ n"); – Stefan

risposta

2

ritorno buffer.toString() nel metodo read risolto il problema. Grazie Stefan.

+0

Ci scusiamo per aver reso questo thread dal vivo dopo molto tempo. Ho letto un file dalla cartella 'asset' e poi ho scritto quel file usando' FileOutputStream'. La mia domanda è quale sia il percorso del file salvato da 'FileOutputStream'. –