18. Trabajar con E/S de archivos en Java

El manejo de archivos es una parte esencial de la programación y en Java esto no es diferente. La capacidad de leer y escribir archivos es crucial para muchos tipos de aplicaciones, desde el procesamiento de datos hasta los sistemas de gestión de contenidos. En este capítulo, exploraremos cómo Java maneja la entrada/salida (E/S), más específicamente, cómo trabajar con archivos usando las clases e interfaces disponibles en la API estándar de Java.

Transmisiones y lectores/escritores

Antes de entrar en detalles sobre cómo manipular archivos en Java, es importante comprender la diferencia entre Streams y Readers/Writers. En pocas palabras, los Streams son flujos de datos binarios y se utilizan cuando se trata de datos binarios, como archivos de imágenes o vídeos. Los lectores y escritores son para caracteres de texto y son los más adecuados para leer y escribir datos de texto como archivos .txt o .csv.

Clases de E/S fundamentales

Java proporciona varias clases en su paquete java.io para trabajar con archivos. Algunas de las clases más fundamentales incluyen:

  • Archivo: representa la ruta de un archivo o directorio y se puede utilizar para crear, eliminar, inspeccionar y cambiar el nombre de archivos o directorios.
  • FileInputStream y FileOutputStream: permiten leer y escribir archivos binarios, respectivamente.
  • FileReader y FileWriter: facilitan la lectura y escritura de archivos de texto, respectivamente.
  • BufferedReader y BufferedWriter: proporcionan un búfer para lectura y escritura, lo que puede mejorar el rendimiento cuando se trata de operaciones de E/S frecuentes.

Leer archivos con Java

Para leer un archivo en Java, puede utilizar la clase FileInputStream para archivos binarios o FileReader para archivos de texto. A continuación se muestra un ejemplo básico de cómo leer un archivo de texto:


intentar (lector BufferedReader = nuevo BufferedReader (nuevo FileReader ("archivo.txt"))) {
    Línea de cuerda;
    mientras ((línea = lector.readLine()) != nulo) {
        System.out.println(línea);
    }
} captura (IOException e) {
    e.printStackTrace();
}

Este código utiliza un try-with-resources para garantizar que el BufferedReader esté cerrado después de su uso, evitando así fugas de recursos. El método readLine() lee el archivo línea por línea hasta llegar al final del archivo (EOF).

Escribir en archivos con Java

Para escribir en un archivo, puede utilizar la clase FileOutputStream para archivos binarios o FileWriter para archivos de texto. A continuación se muestra un ejemplo de cómo escribir en un archivo de texto:


intentar (escritor BufferedWriter = nuevo BufferedWriter (nuevo FileWriter ("archivo.txt"))) {
    escritor.write("Primera línea\n");
    escritor.write("Segunda línea\n");
} captura (IOException e) {
    e.printStackTrace();
}

Al igual que leer, try-with-resources se utiliza para cerrar BufferedWriter una vez completada la escritura. El método write() se utiliza para escribir cadenas en el archivo.

Trabajar con archivos binarios

Cuando se trata de archivos binarios, debes usar FileInputStream y FileOutputStream. A continuación se muestra un ejemplo de cómo copiar un archivo binario:


intente (FileInputStream in = new FileInputStream("input.bin");
     FileOutputStream salida = nuevo FileOutputStream("salida.bin")) {
    byte[] buffer = nuevo byte[1024];
    int bytesLeer;
    while ((bytesRead = in.read(buffer)) != -1) {
        out.write(búfer, 0, bytesRead);
    }
} captura (IOException e) {
    e.printStackTrace();
}

Este ejemplo lee el archivo de entrada en fragmentos de 1024 bytes y escribe cada fragmento en el archivo de salida hasta llegar al final del archivo de entrada.

Manejo de excepciones de E/S

Las operaciones de E/S pueden fallar por diversos motivos, como archivos que no existen, falta de permisos o problemas de hardware. Esta es la razón por la que el manejo de excepciones es crucial cuando se trabaja con E/S en Java. Las operaciones de E/S generan una IOException que debe detectarse o declararse en el encabezado del método.

Nuevas API de E/S

Con la introducción de Java 7, la API de E/S se ha ampliado con el paquete java.nio.file, que ofrece un enfoque más moderno y flexible para trabajar con archivos y directorios. Clases como Path, Paths y Files hicieron que las operaciones de E/S fueran más intuitivas y potentes.

Conclusión

Trabajar con archivos en Java es una habilidad esencial para cualquier programador. A través de las clases y métodos proporcionados por la API de E/S, es posible realizar operaciones complejas de mmanera sencilla y eficiente. Es importante recordar siempre manejar las excepciones de E/S de manera adecuada y utilizar las API más recientes cuando sea posible para aprovechar las mejoras y las funciones adicionales que ofrecen.

Practicar la lectura y escritura de archivos de diferentes formatos y tamaños le ayudará a familiarizarse con los matices de E/S en Java y le preparará para manejar las necesidades de procesamiento y almacenamiento de datos de sus aplicaciones.

p>

Ahora responde el ejercicio sobre el contenido:

¿Cuál de las siguientes afirmaciones sobre el manejo de archivos en Java es correcta?

¡Tienes razón! Felicitaciones, ahora pasa a la página siguiente.

¡Tú error! Inténtalo de nuevo.

Imagen del artículo Serialización de objetos

Siguiente página del libro electrónico gratuito:

114Serialización de objetos

5 minutos

¡Obtén tu certificado para este curso gratis! descargando la aplicación Cursa y leyendo el libro electrónico allí. ¡Disponible en Google Play o App Store!

Disponible en Google Play Disponible en App Store

+ 6,5 millones
estudiantes

Certificado gratuito y
válido con código QR

48 mil ejercicios
gratis

Calificación de 4.8/5
en tiendas de aplicaciones

Cursos gratuitos de
vídeo, audio y texto.