Archivos Internos y Externos

July 20, 2022 | Author: Anonymous | Category: N/A
Share Embed Donate


Short Description

Download Archivos Internos y Externos...

Description

 

Ficheros en Android Memoria Interna y Memoria Externa

 

Opciones de almacenamiento ●



Almacenamiento externo



Preferencias compartidas

Almacenamiento de datos públicos en el

Almacenamiento de datos primitivos

almacenamiento externo compartido.

privados en pares clave-valor(generalmente preferencias del usuario).

Bases de datos SQLite

Almacenamiento de datos estructurados



Almacenamiento interno

en una base de datos privada. ●

Conexión de red

Almacenamiento de datos en la Web mediante tu propio servidor de red.

Almacenamiento de datos privados en la memoria del dispositivo.

 

Memoria Interna

 

Ficheros Internos Veamos en primer lugar cómo trabajar con la memoria interna del dispositivo. Cuando almacenamos ficheros en la memoria interna debemos tener en cuenta las limitaciones de espacio que tienen muchos dispositivos, por lo que no deberíamos abusar de este espacio utilizando ficheros de gran tamaño.

 

Escribir Ficheros Internos Escribir ficheros en la memoria interna es muy sencillo. Android proporciona para esto un método openFileOutput() Parámetro modo de acceso: ● ● ● ●

MODE_PRIVATE  MODE_APPEND MODE_WORLD_READABLE MODE_WORLD_WRITABLE 

 

Escribir Ficheros Internos Este método devuelve una referencia al stream  de  de salida asociado al fichero. Del cual ya podremos utilizar métodos de manipulación de ficheros tradicionales del lenguaje java.

1 2 3 4 5 6 7 8 9 10 11 12 13

try {   OutputStreamWriter fout=   new OutputStreamWriter(   openFileOutput("prueba_int.txt", Context.MODE_PRIVATE));   fout.write("Texto de prueba.");   fout.close(); } catch (Exception ex) {   Log.e("Ficheros", "Error al escribir fichero a memoria interna"); }

 

Escribir Ficheros Internos Una vez creado el fichero de texto en la memoria interna, Android almacena por defecto los ficheros cerrados en una ruta determinada: /data/data/ paquete.java  paquete.java/files/ /files/nombre_fichero nombre_fichero

Para poder comprobar que se haya creado correctamente en la ruta indicada es necesario utilizar el DDMS

 

Leer Ficheros Internos Leer ficheros desde la memoria interna es igual de sencillo. La unica diferencia se encuentra en que utilizaremos el metodo openFileInput() para abrir el fichero, y los metodos de lectura de java.io para poder leer el contenido.

 

Leer Ficheros Internos 1 2 3 4 5 6 7 8

try {   BufferedReader fin =   new BufferedReader(   new InputStreamReader(   openFileInput("prueba_int.txt")));   String texto = fin.readLine();

9 10 11 12 13

  fin.close(); } catch (Exception ex) {   Log.e("Ficheros", "Error al leer fichero

14

desde memoria interna"); }

 

Memoria Externa

 

Ficheros Externos Trabajar con memoria externa al dispositivo nos permite evadir los conflictos de la memoria limitada por el sistema, lo que generalmente es una memoria SD. ● ●

El almacenamiento externo es público. Asegurar que la memoria esta presente y disponible para leer y/o escribir

 

Escribir Ficheros Externos Para esto la API de Android proporciona el metodo

getExternalStorageStatus(), el cuál nos idica si la memoria externa se encuentra disponible, si se puede leer y escribir en ella, devolviendo: ● ● ●

MEDIA_MOUNTED MEDIA_MOUNTED_READ_ONLY Otro tipos de valores que indicaran la existencia de algun problema (MEDIA_UNMOUNTED,MEDIA_REMOVED,MEDIA_BAD_REMOVAL, .. Entre otros..)

 

Escribir Ficheros Externos En este ejemplo podemos realizar una comprobación del estado de la memoria externa: La primera cláusula del if nos indica si la memoria se encuentra montada La segunda cláusula nos indica que la memoria se encuentra montada, pero solo con permisos de lectura Y la ultima clausula nos dice que la memoria tiene algún error o que simplemente no puede ser utilizada.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

boolean sdDisponible = false; boolean sdAccesoEscritura = false;   String estado = Environment.ge Environment.getExternalStorag tExternalStorageState(); eState(); if (estado.equal (estado.equals(Environment. s(Environment.MEDIA_MOUNTED)) MEDIA_MOUNTED)) {   sdDisponible = true;   sdAccesoEscritura sdAccesoEscri tura = true; } else if (estado.equal (estado.equals(Environment. s(Environment.MEDIA_MOUNTED_R MEDIA_MOUNTED_READ_ONLY)) EAD_ONLY)) {   sdDisponible = true;   sdAccesoEscritura sdAccesoEscri tura = false; } else {   sdDisponible = false;   sdAccesoEscritura sdAccesoEscri tura = false; }

 

Escritura Ficheros Externos Una vez haya se haya verificado el estado actual de la memoria y que cumpla con los permisos deseados para operar, podemos continuar. Para escribir un fichero a la memoria externa tenemos que obtener la ruta al  de la memoria externa.  de directorio raiz  Para ello utilizaremos el metodo

getExternalStorageDirectory() de la clase Environment  el cuál nos retornara un objeto File   con la ruta del directorio.  con

 

Escritura Ficheros Externos Con el Objeto File    retornado, podremos

1 2 3 4

generar otro con el nombre5 deseado para el fichero, 7 8 creando un objeto file 9 combinando ambos 10 elementos. 11 12 13 14 15 16 17

try {   File ruta_sd ruta_sd = Environment.getExternalStorageDirectory();   File f = new File(ruta File(ruta_sd.getAb _sd.getAbsolutePat solutePath(), h(), "prueba_sd.txt");   OutputStreamWriter fout =   new OutputStreamWriter(   new FileOutputStream(f));   fout.write("Texto de prueba.");   fout.close(); } catch (Exception ex) {   Log.e("Ficheros", Log.e("Fi cheros", "Error al escribir escribir fichero a tarjeta tarjeta SD"); }

 

Escritura Ficheros Externos El código anterior funciona sin problemas pero escribirá el fichero directamente en la carpeta raíz de la memoria externa, aunque en ocasiones puede resultar necesario, no es una buena práctica. Lo correcto sería disponer de una carpeta propia para nuestra aplicación, lo que además tendrá la ventaja de que al desinstalar la aplicación también se liberará este espacio. Esto lo conseguimos utilizando el método getExternalFilesDir(null)  en vez de getExternalStorageDirectory() . El método getExternalFilesDir()nos devuelve directamente la ruta de una carpeta específica para nuestra aplicación aplicación dentro de la memoria externa siguiendo el siguiente patrón: /Android/data/nuestro.paquete.java /Android/data/ nuestro.paquete.java/files /files

 

Escritura Ficheros Externos Si en vez de null le indicamos como parámetro un tipo de datos determinado (DIRECTORY_MUSIC, DIRECTORY_PICTURES, DIRECTORY_MOVIES, DIRECTORY_RINGTONES, DIRECTORY_ALARMS, DIRECTORY_NOTIFICATIONS, DIRECTORY_PODCASTS) nos devolverá una subcarpeta dentro de la anterior con su nombre correspondiente. Así, por ejemplo, una llamada al método getExternalFilesDir(Environment.DIRECTORY_MUSIC)  nos devolvería la siguiente carpeta: /Android/data/nuestro.paquete.java/files/Music

Esto último, además, ayuda a Android a saber qué tipo de contenidos hay en cada carpeta, de forma que puedan clasificarse clasificarse correctamente por ejemplo en la galería multimedia.

 

Leer Ficheros Externos Para tener acceso a la memoria externa, tendremos que especificar ene l fichero AndroidManifest.XML que nuestra aplicacion necesita permiso de escritura en dicha memoria. Para esto usaremos la clausula con el valor concreto android.permission.WRITE_EXTERNAL_STORAGE 

 

Leer Ficheros Externos Tomando en cuenta lo anterior, nuestro fichero  deberá de AndroidManifest.xml tener una estructura muy similar a la mostrada en el ejemplo.

 

   
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF