Bienvenidos sean a este post, hoy hablaremos sobre como podemos acceder a los archivos de nuestro dispositivo, para empezar dispondremos de tres formas:

Anuncios
  • Memoria interna (Dispositivo)
  • Memoria externa (Tarjeta SD)
  • Recursos

Este ultimo en general es de solo lectura y son ideales para guardar informacion desde la aplicacion, ten en cuenta que elijas cual elijas los dispositivos tienen un limite a la hora de almacenar, comencemos hablando sobre la memoria interna.

La memoria interna es la memoria del dispositivo y nuestro sistema mas basico para poder almacenar mas informacion, por defecto el tipo de acceso es solamente para la aplicacion creadora y no pueden ser leidos por otras aplicaciones, ni siquiera por el usuario del telefono, cada aplicacion tiene una estructura reservada cuando se instala la aplicacion y en general es:

/data/data/nombre_del_paquete/files

La mayor ventaja de trabajar con esta estructura de archivos para guardar la informacion es que si desinstalamos la aplicacion, esta accion tambien borrara la informacion de lo contrario esta puede quedar en el dispositivo y recuerden que el tamaño de la memoria disponible es limitado, como hablamos en posts anteriores Android esta basado en Linux y esto significa que su estructura de directorios trabaja de forma similar y cuando instalamos cada aplicacion el sistema se encarga de generar un nuevo usuario de Linux el cual es el encargado de acceder a la informacion y a la aplicacion, para poder utilizarlo debemos usar cualquier rutina de java.io el cual nos dara acceso a los archivos, existen tambien metodos adicionales a la clase Context para poder trabajar con la memoria interna, dos de los metodos mas utilizados son openFileInput() y openFileOutput(), los cuales permiten acceder a un archivo para lectura o escritura respectivamente, estos metodos no permiten utilizar subdirectorios y esto implica que el archivo se almacena en el recurso reservado para la aplicacion y por ultimo debemos siempre cerrar el archivo con el metodo close(), a continuacion veremos un ejemplo de sintaxis para poder agregar contenido a un archivo:

String fichero = "fichero.txt";
String texto = "Texto a almacenar";
FileOutputStream fos;
try
{
	fos = openFileOutput(fichero, Context.MODE_PRIVATE);
	fos.write(texto.getBytes());
	fos.close();
}
catch (FileNotFoundException e)
{
	Log.e("Mi app", e.getMessage(),e);
}
catch (IOException e)
{
	Log.e("Mi app", e.getMessage(), e);
}
Anuncios

Como pueden ver es bastante simple, necesitaremos dos datos, uno el nombre de nuestro fichero y el texto a almacenar, una buena practica es utilizar los metodos try y catch para poder interceptar los posibles errores, en este caso crearemos un objeto llamado fos de FileOutputStream la cual nos permitira manejar nuestros archivos, despues por medio de openFileOutput() le diremos cual es el archivo a escribir y como vimos anteriormente en este post le decimos que el acceso sera solamente para nuestra aplicacion, despues le diremos que escriba el texto que almacenamos en texto por medio del metodo getBytes() y para finalizar cerramos el archivo para poder acceder en un futuro al mismo, por ultimo tendremos dos catch que se encargaran de guardar en el log de la app los mensajes de error con el id de identificacion, en ambos las instrucciones son iguales pero el primer catch se encarga de monitorear por la excepcion cuando no encuentra el archivo (FileNotFound), y el segundo se encarga cuando encuentra una excepcion de Entrada/Salida (IO), esto es util para cuando tengamos alguna eventualidad, como memoria llena o archivo no generado, y poder manipular nuestro error y evitar otro tipo de errores, con esto terminamos un vistazo sobre como trabajar con la memoria interna pasemos a ver como es el otro tipo de memoria, memoria externa.

En general los dispositivos Android nos permiten tener una posibilidad de poder agregar una memoria externa, Tarjeta SD, y este al ser de mayor capacidad nos facilita la posibilidad de almacenar informacion, fotos, musica o videos. Como dijimos puede ser una tarjeta SD la cual es extraible o una memoria interna no extraible (algunos equipos pueden disponer de las dos caracteristicas simultaneamente), a diferencia de la memoria interna si nosotros conectaramos al dispositivo via un cable USB si podriamos acceder a todos los archivos del mismo y podemos abrir, modificar o borrar por cualquier usuario, su sintaxis para acceder es:

/sdcard/directorio/nombre_archivo

Esta es la carpeta donde el sistema monta a la memoria externa, igual que Linux, y si bien podemos acceder por medio de ella es mas recomendable utilizar el metodo: Environment.getExternalStorageDirectory() para que el sistema nos indique la ruta exacta.

Como hemos visto anteriormente es necesario que Android conceda permisos a la aplicacion para poder acceder a la memoria externa, esto por medio del archivo AndroidManifest.xml donde como hemos visto en otras oportunidades utilizaremos a READ_EXTERNAL_STORAGE o WRITE_EXTERNAL_STORAGE para poder acceder a ella y como hemos dicho en otras oportunidades una vez concedido el acceso cualquier usuario o aplicacion podra acceder a ella.

Anuncios

En resumen, hoy hemos hecho un vistazo general a los tipos de formas que tenemos para almacenar informacion, hemos visto el caso de las memorias internas y externas, como podemos trabajar con un archivo en la memoria interna y como permitir el acceso a la memoria externa, espero les haya sido util sigueme en Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Tambien podes donar

Es para mantenimiento del sitio, gracias!

$1.00