Escritura y lectura de cadenas en un almacenamiento interno en Android

Quiero escribir en un archivo y luego leerlo. Al usar el método openFileOutput(..,..) obtengo que este método no está definido ya que es un método abstracto. Luego lo probé pasando el contexto usando getBaseContext(); y la advertencia estaba desactivada, pero no obtengo el resultado al leer la salida. También intenté pasar el contexto como un parámetro en el constructor, pero eso tampoco ayudó. Quiero escribir métodos estáticos para no tener 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 fragmento se proporciona a continuación.

¿Necesito especificar alguna ruta incluso mientras uso el almacenamiento interno? ¿Se requiere algún permiso para escribir archivos en el almacenamiento interno? (He incluido el permiso para escribir en 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;
}

preguntado el 28 de agosto de 12 a las 11:08

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

Entonces, ¿cómo puedo hacer eso? Un fragmento de código posiblemente ayudará. -

devuelva buffer.toString() como última línea en su método read(). Y agregue "String Read;" en algún lugar antes de su bucle while para definir la variable "Leer". Y debe usar minúsculas, por ejemplo, String line; while( (línea = lector.readLine()) != nulo) buffer.append(línea + "\n"); -

¡Gracias! De hecho, definí Read como una variable estática en mi clase. -

2 Respuestas

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

Respondido 03 Oct 12, 07:10

Perdón por hacer que este hilo vuelva a estar activo después de tanto tiempo. Leí un archivo de asset carpeta y luego escribió ese archivo usando FileOutputStream. Mi pregunta es cuál es la ruta del archivo guardado por FileOutputStream. - saad saadi

¿Se requiere algún permiso para escribir archivos en el almacenamiento interno?

"No necesita ningún permiso para guardar archivos en el almacenamiento interno. Su aplicación siempre tiene permiso para leer y escribir archivos en su directorio de almacenamiento interno".

Es posible que vea algunas publicaciones que indiquen usar: "android.permission.WRITE_INTERNAL_STORAGE"

no hay tal permiso; "ESCRIBIR_ALMACENAMIENTO_INTERNO"

Respondido 29 Jul 13, 05:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.