Spanish [B4A] [Tutorial] Almacenamiento en Android

iliberis

Member
Licensed User
Lo prometido es deuda. Aqui va una traducción del tutorial sobre almacenamiento de ficheros en Basic4Android. El original, en inglés, además cubre el tratamiento de ficheros de texto. Se encuentra en http://www.basic4ppc.com/forum/basic4android-getting-started-tutorials/6690-text-files.html

Muchas aplicaciones requieren acceso a almacenamiento permanente. Las dos formas más comunes de almacenar datos son los ficheros y las bases de datos.

En ambos casos, y en otros similares como iconos, imagenes, etc., se utilizan varios lugares diferentes para guardar estos ficheros, según en qué zona de la memoria vayamos a almacenarlos.

El objeto File tiene varios métodos que nos resultarán útiles a la hora de trabajar con ficheros.

Existen varios lugares de interés donde podemos leer o escribir ficheros:

File.DirAssets
Esta carpeta incluye los ficheros que han sido añadidos mediante el Administrador de Ficheros (File Manager). Estos ficheros son de acceso en modo solo lectura. No es posible crear nuevos ficheros en esta carpeta, que está incluida dentro del apk.

File.DirInternal/File.DirInternalCache
Estas dos carpetas están localizadas en la memoria principal, y son privadas para la aplicación. Las otras aplicaciones no pueden acceder a estos ficheros.
La carpeta cache puede ser eliminada/vaciada por el Sistema Operativo en caso de necesitar más espacio.

File.DirRootExternal
La carpeta raiz de la tarjeta SD

File.DirDefaultExternal
Es la carpeta por defecto de la aplicación en la tarjeta SD.
Está localizada en: <tarjeta_SD>/Android/data/<paquete>/files/
Será creada automáticamente si es necesaria.

IMPORTANTE: El uso de cualquiera de las dos propiedades anteriores hará que nuestra aplicación solicite el permiso EXTERNAL_STORAGE.

Truco: Es posible saber si existe una tarjeta de memoria y si está disponible usando File.ExternalReadable y File.ExternalWriteable

Como comentario adicional, al trabajar con bases de datos con contenido predeterminado, se suele operar de la siguiente manera:

1- Copiamos la BD a la carpeta File.DirAssets, usando el File Manager
2- En el programa, comprobamos si la BD existe en File.DirDefaultExternal. Si no, la copiamos desde File.DirAssets
3- Ya podemos trabajar con ella.
 

sasetcolombia

Member
Licensed User
Como prometí, tutorial subido a mi blog, con los enlaces correspondientes a la entrada original claro, jejejjeje Si alguien se anima ya sabe, que yo me apunto a todo ;)

Basic4Android - [Tutorial] Almacenamiento en Android | Historias de un Cazique
Hola.Antetodo gracias por la informacion.
Tengo un problema respecto al uso de una base de datos SQLITE.
La BD pesa 2.5MB.La agrego a la APP mediante el File Manager,pero al intentar llamar el proceso para copiarla del directorio DirAssets al DirDefaultExternal,me tira una excepcion.Pienso que es por el tamaño de la BD.
Disminuyendo el tamaño a unos 600Kb si funciona y se pueden realizar las consultas normalmente.
Como podria hacer para poder realizar el copiado de la base de datos a este directorio,sin que me genere el error?
 

lumbanico

Member
Hola.Antetodo gracias por la informacion.
Tengo un problema respecto al uso de una base de datos SQLITE.
La BD pesa 2.5MB.La agrego a la APP mediante el File Manager,pero al intentar llamar el proceso para copiarla del directorio DirAssets al DirDefaultExternal,me tira una excepcion.Pienso que es por el tamaño de la BD.
Disminuyendo el tamaño a unos 600Kb si funciona y se pueden realizar las consultas normalmente.
Como podria hacer para poder realizar el copiado de la base de datos a este directorio,sin que me genere el error?
Cámbiale la extensión de *.sqlite a *.jpg. Yo tenía el mismo problema y a mi esta solución que he visto en algún post del foro me ha funcionado.
 
Top