2010-09-02 17 views
7

Está perfectamente descrito here cómo hacerlo, el único problema: él no conoce la función openFileOutput();Android: ¿Cómo almacenar datos en la memoria interna?

private void saveSettingsFile() { 
      String FILENAME = "settings"; 
      String string = "hello world!"; 

      FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); //openFileOutput underlined red 
      try { 
      fos.write(string.getBytes()); 
      fos.close(); 
      } catch (IOException e) { 
      Log.e("Controller", e.getMessage() + e.getLocalizedMessage() + e.getCause()); 
      } 
} 

Esos son los paquetes relevantes Importé:

import java.io.FileOutputStream; 
import java.io.IOException; 
import android.content.Context; 
+0

¿Se puede compartir la salida de error Logcat? –

+0

Acabo de notar que "openFileOutput" está subrayado en rojo. Eclipse me pidió que creara un método así llamado en mi clase, que accidentalmente hice. Ahora eliminé este stub de método y "openFileOutput" se subrayó en rojo nuevamente. – OneWorld

+0

@ Konstantin: Es más un problema lógico que. Entonces logcat aún no ayuda. De acuerdo, ni siquiera puedo compilarlo. – OneWorld

Respuesta

2

Tenga una mirada en this example de utilizar un FileOutputStrem partir de los ejemplos en dev.android.com. Debería darle una idea de cómo usarlo correctamente.

+0

Gracias u. Lo investigaré. sin embargo, todavía preferiría hacer funcionar estas 5 líneas. Quiero decir que el autor del documento al que me referí anteriormente no puede estar fundamentalmente equivocado. – OneWorld

+4

necesita llamar a openFileOutput en un contexto. Pruebe 'context.openFileOutput()' – fredley

+0

Ok, buena sugerencia.Sin embargo, no tengo la variable u objeto "contexto". ¿Cómo lo creo o lo obtengo? – OneWorld

1

La clase dentro de la cual se declara este método, se define como "Estático". Es por eso que está arrojando un error. Elimine la estática de la definición de clase y el bingo ...

0

Simplemente agregue un bloque "try catch" y póngalos entre esto.

De esta manera:.

private void saveSettingsFile(String FILENAME, String data) { 

    FileOutputStream fos; 
    try { 
     fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); 
     fos.write(data.getBytes()); 
     fos.close(); 
    } catch (FileNotFoundException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } // openFileOutput underlined red 
    catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

Cuando hay línea roja debajo de la línea .. En primer lugar comprobar que la línea está bajo el sentense completo o solamente parte derecha de la sentense (es decir, después del signo igual).

Si cubre toda la línea, entonces tiene que corregir algunos errores ..

O si sólo bajo el lado derecho de la sentense ... entonces tiene que quiere algunas cosas de manejo de excepciones.

Si no sabe qué tipo de excepción puede generar ...
No tema, simplemente escriba todo el código en un bloque try (intente {}) y luego agregue un catch y pase un objeto Exception dentro coger .. Ahora es bien ..

De esta manera:

try 
    { 
    ...........your code 
    ...... 
    } 
    catch(Exception e) 
    { 
    e.printstacktrace(); 

    } 

Ahora todos están bien.

Gracias

0

openFileOutput es un método de objeto Context. Y no olvide agregar la cláusula finally para cerrar la transmisión. Bellow es un ejemplo (un poco torpe debido a Java 6 debido a Android).

String data = "Hello"; 
FileOutputStream fos = null; 
try { 
    fos = mContext.openFileOutput(FILENAME, Context.MODE_PRIVATE); 
    fos.write(data.getBytes(Charset.defaultCharset())); 
} catch (IOException e) { 
    e.printStackTrace(); 
} finally { 
    if (fos != null) { 
     try { 
      fos.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

variables mContext debe definirse algún lugar por encima y se inicializa como mContext = getApplicationContext() si se encuentra dentro de una actividad

Cuestiones relacionadas