Saltar a contenido

File vs Path

En Java, Path y File son clases responsables de las operaciones de E/S de ficheros. Realizan las mismas funciones pero pertenecen a diferentes paquetes.

Clase File

Las primeras versiones de Java incluyen el paquete java.io, que contiene casi todas las clases que podríamos necesitar para realizar operaciones de entrada y salida. La clase File es una representación abstracta de nombres de rutas de ficheros, directorios y métodos para manipularlos.

Un objeto File NO es el fichero real. No contiene los datos que contiene el fichero. Es un objeto que contiene métodos que afectan a un archivo o directorio en particular y las funciones para la manipulación real del archivo.

Ejemplo en Windows:

File f = new File("C:\\Users\\temp\\data.txt");

En Linux el carácter separador es /.

Constructor de File

File(String pathName) //Constructor

pathName es una secuencia de nombres de directorio seguidos de un nombre de archivo. Los nombres de los directorios están separados por un carácter especial. La sintaxis de los nombres de directorio, separadores y nombres de archivo depende del sistema operativo.

Warning

Construir un objeto de la clase File NO CREA UN FICHERO

Desventajas de la clase File

  • Manejo de errores El problema más común es el manejo deficiente de errores. Muchos métodos no nos dicen ningún detalle sobre el problema encontrado o incluso lanzan excepciones.

  • Compatibilidad con metadatos Los metadatos pueden incluir permisos, propietario del fichero y atributos de seguridad. Debido a esto, la clase File no admite enlaces simbólicos en absoluto, y el método rename() no funciona de manera consistente en diferentes plataformas.

  • Escalabilidad y rendimiento de métodos También hay un problema de rendimiento porque los métodos de la clase File no escalan. Conduce a problemas con algunos directorios con una gran cantidad de archivos. Enumerar el contenido de un directorio podría provocar un bloqueo, lo que provocaría problemas de recursos de memoria. Debido a algunos de estos inconvenientes, Oracle desarrolló la API NIO2 mejorada.

Path vs File

Cuando construimos un objeto File lo hacemos a través del constructor, mientras que en la clase Path se usa un método estático.

File file = new File("ada.txt");
Path path = Paths.get("ada.txt");