package ar.com.javacuriosities.nio;
import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
/*
* La interfaz Path fue agregada como parte de NIO 2, esta representa un Path en el file system, esto
* puede ser un archivo o un directorio, los path pueden ser relativos como absolutos.
*
* Path es similar a la clase File del paquete java.io
*
* Las ventajas de esta nueva implementación es que nos deja interactuar con cada componente del path
* de forma simple y programática, asi como crear subpath, comparar el ultimo componente, resolver otros path
* en base a uno existente, etc.
*/
public class Lesson02Path {
public static void main(String[] args) {
try {
// Creamos un path a un archivo que no existe
Path path = Paths.get("../javacuriosities/nio/./data.txt");
// Podemos ir y volver desde un Path a un File y viceversa
File fileFromPath = path.toFile();
Path pathFromFile = fileFromPath.toPath();
System.out.println(fileFromPath);
System.out.println(pathFromFile);
System.out.println(fileFromPath.getAbsolutePath()); // Resuelve el absolute path sin remover las expresiones "." ni ".."
System.out.println(fileFromPath.getCanonicalPath()); // Resuelve todo el path
System.out.println(pathFromFile.toAbsolutePath());
System.out.println(pathFromFile.normalize().toAbsolutePath()); // El método normalize remueve las expresiones "." y ".." del path siempre y cuando no estén al comienzo
} catch (IOException e) {
// Log and Handle exception
e.printStackTrace();
}
}
}