Usuario:ManuelRomero/Android/fucheros/Teoria

Tipos de almacenamiento externo

 * 1) Bases de datos SQLLite
 * 2) Ficheros de preferencias copartidas
 * 3) Ficheros en memoria externa o sd
 * 4) Ficheros como recursos del sistema
 * 5) ficheros en la carpeta /asset
 * 6) ficheros en la carpeta /res/raw

===Ficheros como recursos del sistema

Assets: recursos directos o no compilados
 En un proyecto android existe una carpeta llamada /assets que en principio está vacía. Su objetivo es almacenar ficheros externos a la aplicación que serán distribuidos junto con nuestro .apk (formará parte de la compilacón). Igualmente podremos colocar los fichero sen la carpeta /res/raw, en este caso tendremos una serie de restricciones El nombre del fichero debe ser restrictivamente sencillo como el de cualquier recurso que cuelgue de la carpeta /res letras minusculas, números y el carácter de subrayado identificadores de nombre de recursos:[a..z1..9_]*

Este tipo de fichero es de solo lectura, no se puede escribir en ellos. Posteriormente en el programa se puede recuperar los ficheros ahí depositados y navegar por esa carpeta (directorios, ficheros) como si fuera un sistema de ficheros normla de un SO. En general tengo diferentes sitios para ubicar ficheros (res, targeta SD, asset).

Los ficheros que ubiquemos en /res son accesibles como un recurso identificado en la clase R (clase generado de forma autmática para darme una referencia a cada recurso de mi aplicación). Los ficheros colocados en el directorio /asset podrán ser accedidos como si fuera en un sistema de ficheros, sin ningún tipo de restricción  Útil por ejemplo para guardar datos de un juego, o la configuración de una aplicación, …)

Otra opción para guardar información es usar una base de datos, por ejemplo SQLLite, sobre todo indicado cuando la información esté estruturada (pensemos en una tabla de base de datos).

Para gestionar los recursos ubicado en la carpeta /asset procederemos
 * 1) Físicamente ubicamos los ficheros en la carpeta
 * 2) En el código necesitamos un objeto que permita gestionar este recurso (objeto de la clase AssetManager)
 * 3) Estos recursos no generan un ID en la clase R, por lo que debemos especificar el nombre y la ruta para acceder a ellos (usando la clase AssetManager, como ya hemos indicado).
 * Conclusion

Nosotros podemos almacenar ficheros en recursos y también en asset permite establecer jerarquía de ficheros, cosas que res no permite, en esta línea los ficheros ubicados en la carpeta res son más restrictivos y su acceso es menos libre (hay que acceder a través del Id que se general en la clase R). MRM Hacer algo que se puede hacer tanto en res como en asset para ver diferencia.