Escribir y leer cadenas a / desde archivo interno
Veo un montón de ejemplos de cómo escribir objetos String como eso:
String FILENAME = "hello_file"; String string = "hello world!"; FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); fos.write(string.getBytes()); fos.close();
Pero no la forma de leerlos desde el archivo de la aplicación interna. La mayoría de los ejemplos suponen una longitud de cadena específica para calcular el búfer de bytes pero no sé cuál será la longitud. ¿Hay una manera fácil de hacerlo? Mi aplicación escribirá hasta 50-100 cadenas en el archivo
- ¿Cómo mostrar las cantidades formateadas en TextView?
- Hacer cumplir espacios en recursos de cadena
- Android: cómo determinar la última letra totalmente visible en TextView?
- ¿Podemos cargar recursos de cadena de un archivo de recursos que no sea strings.xml en Android?
- Android - cómo reemplazar parte de una cadena por otra cadena?
- Intentando configurar un CCLabelTTF con un entero como parte de su cadena en Cocos2d-X C ++
- Comprobar si la cadena es persa o inglesa
- Android cómo usar el recurso de cadena en una clase java
- Diferentes maneras de obtener un recurso de cadena
- ¿Cómo quitar sólo los espacios finales de una cadena en Java y mantener los espacios principales?
- Android: No se puede invocar toString () en el tipo primitivo int
- Palabra árabe Buscando en el archivo de texto en árabe
- Elemento aleatorio de la matriz de cadenas
Escribir cadenas de esta manera no pone ningún tipo de delimitadores en el archivo. No sabes dónde termina una cuerda y comienza la siguiente. Es por eso que debe especificar la longitud de las cadenas al leerlas.
Puede utilizar DataOutputStream.writeUTF()
y DataInputStream.readUTF()
lugar, ya que estos métodos ponen la longitud de las cadenas en el archivo y leen de nuevo el número correcto de caracteres automáticamente.
En un contexto de Android podría hacer algo como esto:
try { // Write 20 Strings DataOutputStream out = new DataOutputStream(openFileOutput(FILENAME, Context.MODE_PRIVATE)); for (int i=0; i<20; i++) { out.writeUTF(Integer.toString(i)); } out.close(); // Read them back DataInputStream in = new DataInputStream(openFileInput(FILENAME)); try { for (;;) { Log.i("Data Input Sample", in.readUTF()); } } catch (EOFException e) { Log.i("Data Input Sample", "End of file reached"); } in.close(); } catch (IOException e) { Log.i("Data Input Sample", "I/O Error"); }
- Android cuando usar ContentResolver applyBatch o BulkInsert
- Dejar de guardar fotos con la cámara nativa de Android