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 dePath
.Files
: proporciona métodos de utilidad para manipular archivos y directorios.FileSystem
yFileSystems
: 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
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
- Entender el propósito y uso de la interfaz
Path
y la clasePaths
para representar y crear rutas de archivos y directorios. - Comprender cómo se utiliza la clase
Files
para realizar operaciones en archivos y directorios, como lectura, copia y eliminación. - Familiarizarse con las clases
FileSystem
yFileSystems
para trabajar con y acceder a los sistemas de archivos. - Aprender cómo utilizar
BasicFileAttributes
para acceder a los atributos de un archivo. - Ganar habilidad en el manejo del API
java.nio
para manipulación de archivos y directorios de manera eficiente.