Está en la página 1de 7

Almacenamiento de datos en un archivo de texto localizado en una tarjeta SD

En algunas situaciones podra ser til almacenar los datos en una tarjeta SD (tener en cuenta que no todos los
dispositivos Android cuentan con esta caracterstica), esto debido a su mayor capacidad o la facilidad de compartir los
archivos con otras personas entregando la tarjeta SD.
Crear una app que permita ingresar el nombre de un archivo y el contenido. Permitir grabar los datos ingresados al
presionar un botn. Disponer un segundo botn que permita recuperar los datos del archivo de texto.
Hacer que los archivos se graben en una tarjeta SD.
La interfaz visual a implementar es la siguiente:

Podemos ver en la ventana "Component Tree" que la interfaz contiene dos TextView, dos EditText y dos Button.
No olvidar inicializar las propiedades onClick de cada botn con los nombres de mtodos "guardar" y "buscar".
El primer paso es modificar el archivo AndroidManifest.xml para permitir el acceso a la tarjeta SD desde nuestra
aplicacin esto lo hacemos desde el editor de texto del Android Studio
En la carpeta app/manifests podemos abrir el archivo "AndroidManifest.xml" y agregar la lnea de permiso de acceso a la
memoria externa del dispositivo:

Tenemos que agregar el permiso siguiente:


<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Tener cuidado que debe estar fuera del elemento application pero dentro del elemento manifest
El cdigo fuente es:
El mtodo para grabar los datos en un archivo de texto localizado en una tarjeta SD comienza obteniendo el directorio
raiz de la tarjeta a travs del mtodo getExternalStorageDirectory(), el mismo retorna un objeto de la clase File.
public void guardar(View v) {
String nomarchivo = etNombreArchivo.getText().toString();
String contenido=etNotas.getText().toString();
try
{
File tarjeta = Environment.getExternalStorageDirectory();
Creamos un nuevo objeto de la clase File indicando el camino de la unidad SD y el nombre del archivo a crear:
File file = new File(tarjeta.getAbsolutePath(), nomarchivo);
Por ltimo similar al acceso de un archivo interno creamos un objeto de la clase OutputStreamWriter:
OutputStreamWriter osw =new OutputStreamWriter(new FileOutputStream(file));
Grabamos el contenido del EditText:
osw.write(contenido);
Cerramos el archivo:

osw.flush();
osw.close();
Toast.makeText(this,"Las notas fueron guardadas correctamente",Toast.LENGTH_SHORT).show();
etNombreArchivo.setText("");
etNotas.setText("");
}
catch (IOException ioe)
{
Toast.makeText(this, "No se pudo guardar",
Toast.LENGTH_SHORT).show();
}
}
Para la lectura del archivo nuevamente obtenemos la referencia de la tarjeta SD para obtener el path de la unidad de
almacenamiento, el resto del algoritmo es similar al visto con un archivo interno:
public void buscar(View v) {
String nomarchivo = etNombreArchivo.getText().toString();
File tarjeta = Environment.getExternalStorageDirectory();
File file = new File(tarjeta.getAbsolutePath(), nomarchivo);
try {
FileInputStream fIn = new FileInputStream(file);
InputStreamReader archivo=new InputStreamReader(fIn);
BufferedReader br=new BufferedReader(archivo);
String linea=br.readLine();
String todo="";
while (linea!=null)
{
todo=todo+linea+"\n";
linea=br.readLine();
}
br.close();
archivo.close();
etNotas.setText(todo);
} catch (IOException e)
{
Toast.makeText(this, "No se pudo leer",
Toast.LENGTH_SHORT).show();
}
}

Si lo probamos con el emulador del Nexus 5 en el Android Studio cuando tratemos de grabar nos mostrar la
notificacin "No se pudo grabar", esto debido a que dicho celular no permite extender la memoria mediante tarjetas sd.
La solucin para probar es crear otro dispositivo virtual. Los pasos para crear otro dispositivo virtual en Android Studio
son los siguientes:

Desde el men de opciones del Android Studio accedemos a Tools->Android->AVD Manager.

Aparece un dilogo con todas las mquinas virtuales creadas hasta el momento (en las primeras versiones de Android
Studio crea una mquina virtual para el Nexus 5)

Presionamos el botn "Create Virtual Device".


En este nuevo dilogo debemos seleccionar que crearemos un dispositivo virtual de tipo "Phone" y por ejemplo
elegiremos uno genrico de 5.1 pulgadas:

El siguiente dilogo seleccionamos la imagen de mquina virtual que disponemos:

En el nuevo dilogo asignamos un nombre al AVD, por ejemplo: Android480x800:

Presionamos el botn "Show Advanced Settings"


Controlamos que tenga configurado la propiedad de SD card con un valor de 100 o ms:

Finalmente ya tenemos configurado nuestra nueva mquina virtual que permite almacenar datos en una tarjeta sd.
Cuando ejecutemos nuevamente un proyecto tenemos que seleccionar esta nueva mquina virtual para que arranque:

Ubicacin de los archivos desde el Android Device Monitor.


Si luego de ejecutar la aplicacin y almacenar un par de archivos de texto queremos ver donde se almacenan en nuestro
dispositivo virtual podemos inicializar el "Android Device Monitor" desde el men del Android Studio Tools->Android>Android Device Monitor:

Como podemos ver se almacenan en una carpeta que no tiene nada que ver con la carpeta donde se almacenan los
archivos de texto internos.
Esta app debe estar al menos en dos idiomas

También podría gustarte