Acceder a un fichero de los recursos

 

También tienes la posibilidad de almacenar ficheros en los recursos, es decir, adjuntos al paquete de la aplicación. Has de tener en cuenta que estos ficheros no podrán ser modificados.

Tienes dos alternativas para esto: usar la carpeta res/raw o assets. La principal diferencia a la hora de usar una carpeta u otra está en la forma de identificar el fichero. Por ejemplo, si arrastras un fichero que se llame datos.txt a la carpeta res/raw, podrás acceder a él usando context.getResources. openRawResource(R.raw.datos). Si, por el contrario, dejas este fichero en la carpeta assets, podrás acceder a él usando context.getAssets(). open("datos.txt"). Otra diferencia es que dentro de assets podrás crear subcarpetas para organizar los ficheros.

Recuerda que, tanto en la carpeta raw como en assets, los ficheros nunca son comprimidos.

1.     Con el explorador de ficheros busca en el terminal un fichero de texto que se llamer puntuaciones.txt, creado en alguno de los ejercicios anteriores.

2.     Extráelo del terminal y pégalo en la carpeta res/raw del proyecto Asteroides.

3.     Selecciona el fichero AlmacenPuntuacionesFicheroInterno.java y cópialo en el portapapeles (Ctrl-C).

4.     Pega el fichero sobre el proyecto (Ctrl-V) y renómbralo como AlmacenPuntuacionesRecursoRaw.java.

5.     Elimina de esta clase todo el código del método guardarPuntuacion(). No se realiza ninguna acción en este método.

6.     Para que las puntuaciones se lean del fichero de los recursos, en el método listaPuntuaciones() reemplaza:

FileInputStream f = context.openFileInput(FICHERO);

       por:

InputStream f = context.getResources().openRawResource(
			                      R.raw.puntuaciones);

7.     La siguiente línea ya no tiene sentido. Elimínala:

private static String FICHERO = "puntuaciones.txt";

8.     Modifica el código correspondiente para que la nueva clase pueda ser seleccionada como almacén de las puntuaciones.

9.     Verifica el resultado.

 

Ejercicio paso a paso: Leyendo puntuaciones en un fichero de recursos en assets

1.     Selecciona File / New / Folder / Assets Folder:

En la siguiente ventana deja los valores por defecto:

Hemos creado la carpeta assets que aparecerá dentro de res. Vamos a crear la subcarpeta carpeta dentro de esta carpeta. Pulsa con el botón derecho sobre assets, selecciona New/Directory e introduce “carpeta”.

2.     Copia el fichero puntuaciones.txt dentro de la carpeta que acabas de crear.

3.     Selecciona el fichero AlmacenPuntuacionesRecursoRaw.java y cópialo en el portapapeles (Ctrl-C).

4.     Pega el fichero sobre el proyecto (Ctrl-V) y renómbralo como AlmacenPuntuacionesRecursoAssets.java.

5.     En el método listaPuntuaciones() reemplaza:

InputStream f = context.getResources().openRawResource(
                                              R.raw.puntuaciones);

       por:

InputStream f = context.getAssets().open("carpeta/puntuaciones.txt");

 

6.     Modifica el código correspondiente para que la nueva clase pueda ser seleccionada como almacén de las puntuaciones.

7.    Verifica que el resultado es idéntico al ejercicio anterior.