domingo, 13 de diciembre de 2020

Lectura de archivos

Manejo de archivos

La lectura y escritura de archivos es una de las funcionalidades que ha proveído Java desde sus inicios, siendo mejorada tras sus diversas versiones.


Lectura de archivos de texto

Para llevar a cabo la lectura de un archivo de texto se pueden emplear diversos métodos de la clase java.io.*, pero se recomienda complementar esta con la clase java.nio.* considerada la clase de reemplazo de la anterior, que contiene entre sus componentes a Files y Paths permitiendo simplificar acciones como copiar un archivo en uno nuevo y brindando el soporte para llevar a cabo las acciones clásicas de la clase original.

Por ejemplo, supongamos un archivo txt con el siguiente contenido:

-A: Hola
-G: Hola, ¿cómo estas?
-A: Bien, y tú
-G: Igualmente
-A: Debo irme, hasta luego
-G: Hasta luego, saludos a doña Dana

Ahora una clase "main" de Java con el siguiente código que mostrará el contenido del archivo en consola empleando diversas formas:

  1. package test;
  2. import java.io.BufferedReader;
  3. import java.io.File;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.nio.charset.Charset;
  7. import java.nio.charset.StandardCharsets;
  8. import java.nio.file.Files;
  9. import java.util.List;
  10. public class Test {
  11. public static void main(String[] args) throws IOException {
  12. //Archivo indicando la ruta
  13. File archivo = new File("/media/ruta/data.txt");
  14. //Definición de caracteres UTF-8
  15. Charset cs = StandardCharsets.UTF_8;
  16. /*Lectura de datos*/
  17. //USANDO Files.readAllLines
  18. try {
  19. List<String> lines = Files.readAllLines(archivo.toPath(), cs);
  20. lines.forEach(l -> {
  21. System.out.println(l);
  22. });
  23. } catch (IOException e) {
  24. System.err.println(e.getMessage());
  25. }
  26. System.out.println("====================================");
  27. //USANDO BufferedReader
  28. try (BufferedReader br = Files.newBufferedReader(archivo.toPath(), cs)) {
  29. String line;
  30. while ((line = br.readLine()) != null) {
  31. System.out.println(line);
  32. }
  33. } catch (IOException e) {
  34. System.err.println(e.getMessage());
  35. }
  36. System.out.println("====================================");
  37. //USANDO InputStream
  38. try (InputStream is = Files.newInputStream(archivo.toPath())) {
  39. byte[] bytes = new byte[(int) archivo.length()];
  40. is.read(bytes);
  41. String content = new String(bytes, cs);
  42. System.out.println(content);
  43. } catch (IOException e) {
  44. System.err.println(e.getMessage());
  45. }
  46. }
  47. }

Mostrará el siguiente resultado:

-A: Hola
-G: Hola, ¿cómo estas?
-A: Bien, y tú
-G: Igualmente
-A: Debo irme, hasta luego
-G: Hasta luego, saludos a doña Dana
====================================
-A: Hola
-G: Hola, ¿cómo estas?
-A: Bien, y tú
-G: Igualmente
-A: Debo irme, hasta luego
-G: Hasta luego, saludos a doña Dana
====================================
-A: Hola
-G: Hola, ¿cómo estas?
-A: Bien, y tú
-G: Igualmente
-A: Debo irme, hasta luego
-G: Hasta luego, saludos a doña Dana


Lectura de archivos multimedia

Además, se pueden cargar archivos como:

Cada uno de estos tiene sus particularidades y diferentes formas de llamado dependiendo del entorno donde se desee mostrarlos, es diferente cargar una imagen en una aplicación WEB que en una aplicación de escritorio.

No hay comentarios:

Publicar un comentario