Saltar la navegación

5.1.- Java NIO Path.

La interfaz java.nio.file.Path representa un path y las clases que implementen esta interfaz puede utilizarse para localizar ficheros en el sistema de ficheros .
Una ruta puede señalar a un archivo o un directorio. Un camino puede ser absoluto o relativo. Una ruta absoluta contiene la ruta completa desde la raíz del sistema de archivos hasta el archivo o directorio al que apunta. Una ruta relativa contiene la ruta al archivo o directorio relativo a alguna otra ruta. 

La forma mas sencilla de construir un objeto que cumpla la interfaz Path es a partir de la clase java.nio.file.Pathsque tiene métodos estáticos que retornan objetos Path a partir de una representación tipo String del path deseado, por ejemplo:

Path p = Paths.get("/home/ad/mi_fichero");

Por supuesto, no es necesario que los ficheros existan de verdad en el disco duro para que se puedan crear los objetos Path correspondientes: La representación y manejo de paths en Java no está restringida por la existencia de esos ficheros o directorios en el sistema de ficheros.

El interfaz Path declara numerosos métodos que resultan muy útiles para el manejo de paths, como por ejemplo, obtener el nombre corto de un fichero, obtener el directorio que lo contiene, resolver paths relativos, etc.

Una instancia de tipo Path refleja el sistema de nombrado del sistema operativo subyacente, por lo que objetos path de diferentes sistemas operativos no pueden ser comparados fácilmente entre si.

Operaciones con Path
  • Recuperar partes de una ruta
  • Eliminar redundancias de una ruta
  • Convertir una ruta
  • Unir dos rutas
  • Crear una ruta relativa a otra dada
  • Comparar dos rutas

Ejemplo:

import java.nio.file.Path;
import java.nio.file.Paths;

public class PathEjamplo {
public static void main(String args[]) {
    Path path = Paths.get("C:/Users/alumno/PathEjemplo");
    System.out.println(" path = " + path);
    System.out.println(" is absoute ? = " + path.isAbsolute());
    System.out.println(" file short name = " + path.getFileName());
    System.out.println(" parent = " + path.getParent());
    System.out.println(" uri = " + path.toUri());
    path = Paths.get("/home/PathEjemplo");
    System.out.println(" path = " + path);
    System.out.println(" is absoute ? = " + path.isAbsolute());
    System.out.println(" file short name = " + path.getFileName());
    System.out.println(" parent = " + path.getParent());
    System.out.println(" uri = " + path.toUri());
    }
}

Clase FileSystem

El concepto de FileSystem define un sistema de ficheros completo. Mientras que por otro lado el concepto de Path hace referencia a un directorio, fichero o link que tengamos dentro de nuestro sistema de ficheros. El siguiente código hace uso de FileSystem y Path para obtener el nombre de un fichero así como la carpeta padre en la que se encuentra ubicado.

Ejemplo:

import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.util.Iterator;
    public class EjemploPath2 {
    public static void main(String args[]) {
    FileSystem sistemaFicheros = FileSystems.getDefault();
    Path rutaFichero = sistemaFicheros.getPath("C:\\Users\\alumno\\PathEjemplo");
    System.out.println(rutaFichero.getFileName());
    System.out.println(rutaFichero.getParent().getFileName());
    Path rutaDirectorio = sistemaFicheros.getPath("C:\\Users\\alumno");
    Iterator<Path> it = rutaDirectorio.iterator();
    while (it.hasNext()) {
         System.out.println(it.next().getFileName());
         }
    }
}