API java.nio 2

Intermedio
Java
Java
Actualizado: 12/03/2025

El API java.nio (New I/O) es una mejora del sistema de entrada/salida (I/O) original de Java, que ofrece mayor flexibilidad para la lectura y escritura de datos de archivos y redes. En particular, el paquete java.nio.file (a veces referido como NIO.2), introducido en Java SE 7, proporciona un conjunto de características extensas y versátiles para manipular archivos y directorios.

Las principales clases y interfaces de java.nio.file que se cubrirán en esta explicación son:

  • Path: representa la ubicación de un archivo o directorio en un sistema de archivos.
  • Paths: contiene métodos de utilidad para crear instancias de Path.
  • Files: proporciona métodos de utilidad para manipular archivos y directorios.
  • FileSystem y FileSystems: representan y proporcionan acceso a sistemas de archivos, respectivamente.
  • BasicFileAttributes: permite acceder a los atributos básicos de un archivo.

Path y Paths

La interfaz Path representa la ubicación de un archivo o directorio en un sistema de archivos. Se pueden construir objetos Path usando la clase de utilidad Paths. Por ejemplo:

Path path = Paths.get("/home/user/documentos");

Una Path también puede representar una ruta relativa. Por ejemplo:

Path pathRelativa = Paths.get("documentos/miArchivo.txt");

Un Path puede ser convertido a un File, y viceversa:

File file = path.toFile();
Path samePath = file.toPath();

Files

La clase Files proporciona una serie de métodos estáticos para realizar operaciones con archivos y directorios. Por ejemplo:

  • Leer todas las líneas de un archivo:
Path path = Paths.get("/home/user/documentos/miArchivo.txt");
List<String> lines = Files.readAllLines(path);
  • Copiar un archivo:
Path source = Paths.get("/home/user/documentos/miArchivo.txt");
Path target = Paths.get("/home/user/documentos/miArchivoCopia.txt");
Files.copy(source, target);
  • Eliminar un archivo:
Path path = Paths.get("/home/user/documentos/miArchivo.txt");
Files.delete(path);

FileSystem y FileSystems

La interfaz FileSystem representa un sistema de archivos. Puede ser uno proporcionado por la plataforma (por ejemplo, el sistema de archivos nativo), o uno proporcionado por un proveedor personalizado. Se puede obtener una instancia de un FileSystem utilizando la clase de utilidad FileSystems. Por ejemplo:

FileSystem fs = FileSystems.getDefault();

Con un FileSystem, puedes obtener información sobre el sistema de archivos y realizar operaciones con él. Por ejemplo, puedes obtener el separador de archivos utilizado por el sistema de archivos:

String separator = fs.getSeparator();

También puedes obtener un Path a partir de un FileSystem:

Path path = fs.getPath("/home/user/documentos");

BasicFileAttributes

La interfaz BasicFileAttributes proporciona acceso a los atributos básicos asociados a un archivo. Puedes obtener una instancia de BasicFileAttributes para un archivo determinado utilizando la clase Files. Por ejemplo:

Path path = Paths.get("/home/user/documentos/miArchivo.txt");
BasicFileAttributes attrs = Files.readAttributes(path, BasicFileAttributes.class);

System.out.println("Tamaño del archivo: " + attrs.size());
System.out.println("Fecha de creación: " + attrs.creationTime());
System.out.println("Es un directorio: " + attrs.isDirectory());

En resumen, el API java.nio.file proporciona una serie de clases y métodos de utilidad para trabajar con archivos y sistemas de archivos en Java de una manera más flexible y versátil. Esta es solo una introducción básica; hay muchos más métodos y características disponibles en este API.

Fuentes y referencias

Documentación oficial y recursos externos para profundizar en Java

Documentación oficial de Java
Alan Sastre - Autor del tutorial

Alan Sastre

Ingeniero de Software y formador, CEO en CertiDevs

Ingeniero de software especializado en Full Stack y en Inteligencia Artificial. Como CEO de CertiDevs, Java es una de sus áreas de expertise. Con más de 15 años programando, 6K seguidores en LinkedIn y experiencia como formador, Alan se dedica a crear contenido educativo de calidad para desarrolladores de todos los niveles.

Más tutoriales de Java

Explora más contenido relacionado con Java y continúa aprendiendo con nuestros tutoriales gratuitos.

Aprendizajes de esta lección

  1. Entender el propósito y uso de la interfaz Path y la clase Paths para representar y crear rutas de archivos y directorios.
  2. Comprender cómo se utiliza la clase Files para realizar operaciones en archivos y directorios, como lectura, copia y eliminación.
  3. Familiarizarse con las clases FileSystem y FileSystems para trabajar con y acceder a los sistemas de archivos.
  4. Aprender cómo utilizar BasicFileAttributes para acceder a los atributos de un archivo.
  5. Ganar habilidad en el manejo del API java.nio para manipulación de archivos y directorios de manera eficiente.