En este tutorial vamos a explicar unos métodos muy útiles a la hora de leer y escribir ficheros.
En este tutorial aprenderás:
- Leer ficheros desde un recurso raw (solo lectura)
- Leer ficheros desde memoria interna
- Guardar ficheros en memoria interna
- Leer ficheros desde memoria externa
- Guardar ficheros desde memoria externa
Espero que le guste, si tiene alguna duda no dude en comentar.
¡ Saludos !
Enlaces de interés
El código de esta página a sido copiado desde los siguientes enlaces:
Memoria Interna y recurso raw
Enlaces de interés
El código de esta página a sido copiado desde los siguientes enlaces:
Memoria Interna y recurso raw
Aquí se explica de forma más detallada como leer y escribir desde la memoria interna además de leer desde un recurso raw.
Memoria externa
Memoria externa
Aquí se explica de forma más detallada como leer y escribir desde la memoria externa.
Para aprender más:
Leer ficheros desde un recurso raw
Se trata de un fichero que ya está incluido como recurso de nuestra aplicación en /res/raw, normalmente esta carpeta no está por defecto, por lo que tendremos que crearla.
Los ficheros raw se utilizan solo para leer ya que es imposible modificaros.
try { InputStream fraw = getResources().openRawResource(R.raw.prueba_raw); BufferedReader brin = new BufferedReader(new InputStreamReader(fraw)); String linea = brin.readLine(); fraw.close(); } catch (Exception ex) { Log.e("Ficheros", "Error al leer fichero desde recurso raw"); }
Leer ficheros desde memoria interna
Se trata de los ficheros que se guardan en la memoria interna del teléfono.
Para acceder a los archivos almacenados en la memoria interna del teléfono desde Eclipse tendremos que ir a la vista DDMS y a continuación en File Explorer nos vamos a data/data/paquete/files.
El método que se utiliza para leer desde memoria interna es:
Guardar ficheros en memoria interna
Los ficheros se guardarán en la ruta data/data/paquete/files.
Leer ficheros desde memoria externa
Son los ficheros que se guardan en la tarjeta SD del teléfono,
Para acceder a estos ficheros tendremos que ir a la vista DDMS de Eclipse, a continuación pulsamos sobre la pestaña File Explorer y en la ruta mnt/sdcard se encontrarán al final de la carpeta los ficheros almacenados en la memoria externa.
Y finalmente utilizar el siguiente método:
Guardar ficheros desde memoria externa
Los ficheros se guardarán en la tarjeta de memoria externa, y desde el Eclipse podemos verlos desde la vista DDMS en la ruta mnt/sdcard.
Tendremos a igual que el anterior añadirle los permisos al manifiesto para que la aplicación pueda acceder a la memoria externa.
Y finalmente el código para guardar un fichero en memoria externa.
Fuente: sgoliver.net blog
Para acceder a los archivos almacenados en la memoria interna del teléfono desde Eclipse tendremos que ir a la vista DDMS y a continuación en File Explorer nos vamos a data/data/paquete/files.
El método que se utiliza para leer desde memoria interna es:
try { BufferedReader fin = new BufferedReader( new InputStreamReader( openFileInput("prueba_int.txt"))); String texto = fin.readLine(); fin.close(); } catch (Exception ex) { Log.e("Ficheros", "Error al leer fichero desde memoria interna"); }
Guardar ficheros en memoria interna
Los ficheros se guardarán en la ruta data/data/paquete/files.
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"); }
Leer ficheros desde memoria externa
Son los ficheros que se guardan en la tarjeta SD del teléfono,
Para acceder a estos ficheros tendremos que ir a la vista DDMS de Eclipse, a continuación pulsamos sobre la pestaña File Explorer y en la ruta mnt/sdcard se encontrarán al final de la carpeta los ficheros almacenados en la memoria externa.
Para leerlo primero tendremos que darle permiso a la aplicación a través del manifiesto, tendremos que añadir al manifiesto:
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="net.sgoliver.android" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="7" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".AndroidFicheros" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Y finalmente utilizar el siguiente método:
try { File ruta_sd = Environment.getExternalStorageDirectory(); File f = new File(ruta_sd.getAbsolutePath(), "prueba_sd.txt"); BufferedReader fin = new BufferedReader( new InputStreamReader( new FileInputStream(f))); String texto = fin.readLine(); fin.close(); } catch (Exception ex) { Log.e("Ficheros", "Error al leer fichero desde tarjeta SD"); }
Guardar ficheros desde memoria externa
Los ficheros se guardarán en la tarjeta de memoria externa, y desde el Eclipse podemos verlos desde la vista DDMS en la ruta mnt/sdcard.
Tendremos a igual que el anterior añadirle los permisos al manifiesto para que la aplicación pueda acceder a la memoria externa.
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="net.sgoliver.android" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="7" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".AndroidFicheros" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Y finalmente el código para guardar un fichero en memoria externa.
try { File ruta_sd = Environment.getExternalStorageDirectory(); File f = new File(ruta_sd.getAbsolutePath(), "prueba_sd.txt"); OutputStreamWriter fout = new OutputStreamWriter( new FileOutputStream(f)); fout.write("Texto de prueba."); fout.close(); } catch (Exception ex) { Log.e("Ficheros", "Error al escribir fichero a tarjeta SD"); }
Fuente: sgoliver.net blog
FIN
Como puedo hacer para visualizar un documento en formato pdf desde res/raw
ResponderEliminarHola ! Estoy intentando guardar un txt en memoria externa, me crea el directorio en la SD y todo, pero está vacío, el archivo nunca se genera, cuál puede ser el problema???
ResponderEliminar