2012-08-28 23 views
5

Quiero escribir en un archivo y luego leer de él. Al utilizar el método openFileOutput (.., ..), entiendo que este método no está definido, ya que es un método abstracto. Luego lo intenté con pasar el contexto usando getBaseContext(); y la advertencia estaba apagada, pero no obtengo el resultado al leer la salida. También traté de pasar el contexto como un parámetro en el constructor, pero eso tampoco ayudó. Quiero escribir métodos estáticos para que no tenga que instanciar la clase cada vez y la estática no es la razón porque también lo he intentado sin ella. El código es un fragmento se da a continuación.Escribir y leer Cadena en un almacenamiento interno en Android

¿Debo especificar cualquier ruta incluso cuando uso el almacenamiento interno? ¿Se necesita algún permiso para escribir archivos en el almacenamiento interno? (He incluido el permiso para escribir en el almacenamiento externo)

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

¡Desea devolver buffer.toString() en read()! (Por cierto, "String Read" parece faltar en su fragmento de código, sin embargo, no debe usar mayúsculas variables no estáticas.) – Stefan

+0

Entonces, ¿cómo puedo hacer eso? Un fragmento de código posiblemente sea útil. – Atinder

+4

return buffer.toString() como última línea en su método read(). Y agrega "String Read"; en algún lugar antes de su while-loop para definir la variable "Leer". Y debes usar minúsculas, p. Línea de cadena; while ((line = reader.readLine())! = null) buffer.append (line + "\ n"); – Stefan

Respuesta

2

return buffer.toString() en el método de lectura resolvió el problema. Gracias Stefan.

+0

Perdón por hacer este hilo en vivo nuevamente después de mucho tiempo. Leí un archivo de la carpeta 'activo' y luego escribí ese archivo usando' FileOutputStream'. Mi pregunta es cuál es la ruta del archivo guardado por 'FileOutputStream'. –

Cuestiones relacionadas