0% encontró este documento útil (0 votos)
31 vistas5 páginas

Uso de openFileOutput en Android

Cargado por

palermo jimenez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
31 vistas5 páginas

Uso de openFileOutput en Android

Cargado por

palermo jimenez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

El método openFileOutput en Android se utiliza para escribir datos en un archivo

dentro del almacenamiento interno de la aplicación. Los archivos creados con este
método son privados para la aplicación y no pueden ser accedidos por otras aplicaciones
a menos que se especifiquen permisos explícitos.

1. Conceptos básicos

Sintaxis
java
Copiar código
FileOutputStream openFileOutput(String name, int mode) throws
FileNotFoundException

• Parámetros:
o name: Nombre del archivo (cadena de texto). Si el archivo no existe, se creará.
o mode: Modo de acceso. Los valores más comunes son:
▪ MODE_PRIVATE (valor predeterminado): Sobrescribe el archivo si ya
existe.
▪ MODE_APPEND: Agrega datos al final del archivo sin sobrescribirlo.
▪ MODE_WORLD_READABLE y MODE_WORLD_WRITEABLE (obsoletos a
partir de Android 7.0).
• Retorno: Devuelve un FileOutputStream, que permite escribir datos en el
archivo.
• Excepción: Puede lanzar FileNotFoundException si ocurre algún problema al
intentar abrir el archivo.

2. Ejemplo básico: Escribir en un archivo

Código
java
Copiar código
import [Link];
import [Link];
import [Link];

public class MainActivity extends AppCompatActivity {


@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);

String fileName = "[Link]";


String contenido = "Hola, este es un archivo de ejemplo.";

try (FileOutputStream fos = openFileOutput(fileName,


MODE_PRIVATE)) {
[Link]([Link]()); // Escribir el contenido
en el archivo
[Link]("Archivo escrito exitosamente.");
} catch (IOException e) {
[Link]();
}
}
}

Explicación:

1. Nombre del archivo: Se especifica el nombre del archivo como "[Link]".


2. Modo de apertura: Se utiliza MODE_PRIVATE para que sea accesible solo para esta
aplicación.
3. Escritura de datos: Los datos se convierten en bytes usando getBytes().

3. Leer el archivo creado

Después de escribir datos con openFileOutput, se pueden leer usando


openFileInput.

Código
java
Copiar código
import [Link];
import [Link];
import [Link];

public class MainActivity extends AppCompatActivity {


@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);

String fileName = "[Link]";

try (FileInputStream fis = openFileInput(fileName)) {


int contenido;
StringBuilder sb = new StringBuilder();
while ((contenido = [Link]()) != -1) {
[Link]((char) contenido);
}
[Link]("Contenido del archivo: " +
[Link]());
} catch (IOException e) {
[Link]();
}
}
}

Resultado: El contenido escrito en el archivo ("Hola, este es un archivo de


ejemplo.") será leído y mostrado.

4. Agregar datos al archivo existente

Para agregar datos sin sobrescribir el contenido existente, utiliza MODE_APPEND.


Código
java
Copiar código
try (FileOutputStream fos = openFileOutput("[Link]",
MODE_APPEND)) {
String nuevoContenido = "\nEsta es una nueva línea.";
[Link]([Link]());
[Link]("Datos agregados al archivo.");
} catch (IOException e) {
[Link]();
}

Resultado: El archivo ahora contendrá:

Copiar código
Hola, este es un archivo de ejemplo.
Esta es una nueva línea.

5. Escritura avanzada: Manejo de objetos

Puedes escribir objetos serializables en el archivo utilizando ObjectOutputStream.

Código
java
Copiar código
import [Link];
import [Link];
import [Link];
import [Link];

public class MainActivity extends AppCompatActivity {


@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);

Usuario usuario = new Usuario("Juan", 30);

try (FileOutputStream fos = openFileOutput("[Link]",


MODE_PRIVATE);
ObjectOutputStream oos = new ObjectOutputStream(fos)) {
[Link](usuario); // Serializar y guardar el
objeto
[Link]("Objeto escrito en el archivo.");
} catch (IOException e) {
[Link]();
}
}

static class Usuario implements Serializable {


String nombre;
int edad;

Usuario(String nombre, int edad) {


[Link] = nombre;
[Link] = edad;
}
}
}

Explicación:

• Usuario es una clase serializable.


• Los objetos de esta clase se escriben en el archivo [Link].

6. Escritura y lectura de grandes volúmenes de datos

Para trabajar con grandes volúmenes de datos, puedes dividir los datos en bloques y
escribirlos gradualmente.

Código
java
Copiar código
try (FileOutputStream fos = openFileOutput("datos_grandes.txt",
MODE_PRIVATE)) {
for (int i = 0; i < 1000000; i++) {
[Link](("Línea " + i + "\n").getBytes());
}
[Link]("Archivo grande creado exitosamente.");
} catch (IOException e) {
[Link]();
}

Resultado: Se crea un archivo con un millón de líneas.

7. Lista de archivos creados por la aplicación

Puedes listar los archivos creados usando fileList().

Código
java
Copiar código
String[] archivos = fileList();
[Link]("Archivos creados:");
for (String archivo : archivos) {
[Link](archivo);
}

Resultado: Muestra todos los archivos creados en el almacenamiento interno de la


aplicación.
8. Eliminar archivos creados

Puedes eliminar archivos con deleteFile.

Código
java
Copiar código
if (deleteFile("[Link]")) {
[Link]("Archivo eliminado exitosamente.");
} else {
[Link]("El archivo no existe o no pudo ser
eliminado.");
}

Errores comunes y cómo evitarlos

1. Nombre de archivo inválido:


o Evita caracteres no permitidos en los nombres de archivo como /, \, *, ?, etc.
2. No manejar excepciones:
o Siempre usa bloques try-catch para manejar posibles errores como
IOException.
3. Recursos no cerrados:
o Utiliza try-with-resources para cerrar automáticamente los recursos
abiertos.
4. Datos sobrescritos accidentalmente:
o Si no quieres sobrescribir datos, utiliza MODE_APPEND.

Con estos ejemplos, puedes utilizar openFileOutput desde operaciones básicas hasta
casos avanzados como escritura de objetos y manejo de grandes volúmenes de datos.

También podría gustarte