in

Archivo Java Path Vs – Javatpoint

En Java, Sendero, y Expediente ambos son clases. Pertenecen a diferentes paquetes pero realizan el mismo mecanismo. Podemos decir que el Clase de ruta de Java es la versión avanzada del Clase de archivo. Usamos ambas clases para las operaciones de E / S de archivos. En esta sección, aprenderemos diferencias entre la ruta y el archivo.

Clase de archivo Java

En Java, Expediente es la clase que pertenece al paquete java.io. Es una representación abstracta de los nombres de ruta de directorio y archivo. Se utiliza para la E / S de archivos, pero tiene muchos inconvenientes.

Clase de ruta de Java

Es lo mismo que la clase File o podemos decir que es una clase sustituta de la clase Java File. Puede realizar todas las operaciones que se pueden realizar con la ayuda de la clase File. La clase Java Path pertenece al paquete java.nio.file. Es parte de la biblioteca moderna java.nio.file. Suele utilizarse para crear nuevos proyectos.

Ruta Vs Archivo

Antes del lanzamiento de Java SE 1.7, solíamos utilizar la clase java.io.File para la E / S de archivos. Pero la clase File tiene varios inconvenientes. Muchos métodos de la clase File no arrojaron excepciones, incluso no pudieron producir el resultado deseado. Por lo tanto, fue difícil obtener un mensaje de error útil.

Supongamos que se va a eliminar un archivo y un programa que implementa la función de eliminación de archivos no logra eliminar un archivo. El programa muestra que la eliminación del mensaje de error falló. Pero no pudo identificar el motivo de la falla. El motivo del error de eliminación del archivo puede que el archivo no existiera o que la ruta del archivo sea incorrecta o que el usuario no tenga permiso o algún otro motivo.

El otro inconveniente es que la clase Java File no admite los enlaces simbólicos (también conocidos como enlace simbólico o enlace suave) y el método rename () no funciona de manera uniforme en toda la plataforma. En File I / O, necesitábamos más soporte para metadatos que eran deficientes en la clase File. Los metadatos pueden incluir permisos, propietario del archivo y atributos de seguridad.

Los métodos de la clase de archivo no se escalaron. La solicitud de una lista de directorios grande puede hacer que el servidor se bloquee. También puede causar problemas de recursos de memoria que pueden conducir a DoS (Denegación de servicio).

Por lo tanto, la clase Java File tiene tantos inconvenientes y no hay razón para usar esta clase para el desarrollo de nuevos proyectos.

Oracle da una pista para usar la clase Path si tenemos el código heredado que usa la clase java.io.File. Ofrece la ventaja de la clase Path con un impacto mínimo en el código.

La clase Java File proporciona el método toPath () para convertir un archivo de estilo antiguo en una instancia de java.nio.file.Path. Por ejemplo:

Proporciona las funciones avanzadas y enriquecidas disponibles en la clase Java Path. Supongamos que queremos eliminar un archivo:

Podemos modificar la declaración anterior utilizando el método delete () de la clase Archivos, de la siguiente manera:

Cuando comparamos estas dos clases, encontramos que el java.nio.file.Path es mejor que la clase java.io.File.

La clase Java Path es mejor, sin embargo, la clase java.io.File no está obsoleta en las nuevas versiones. El marco de Android todavía usa la clase File para sus funciones básicas de manejo de archivos.

Asignación de la funcionalidad java.io.File a java.nio.file.Path

En la versión Java SE 1.7, la arquitectura de E / S de archivos se ha rediseñado por completo. No podemos cambiar un método por otro. Si está desarrollando un nuevo proyecto relacionado con la E / S de archivos y desea utilizar la rica funcionalidad proporcionada por el paquete java.nio.file, utilice el método toPath () de la clase File. Está bien usar la funcionalidad de la clase Path, pero si no está satisfecho y no satisface sus necesidades, debe volver a escribir el código de E / S del archivo.

La siguiente tabla resume una descripción general de la funcionalidad de la API java.io.File que se asigna a la API java.nio.file.

Funcionalidad java.io.File Funcionalidad java.nio.file Usos
java.io.File java.nio.file.Path Se utiliza para especificar los paquetes.
java.io.RandomAccessFile La funcionalidad SeekableByteChannel. Se utiliza si queremos acceder aleatoriamente a un archivo.
File.canRead, canWrite, canExecute Files.isReadable, Files.isWritable y Files.isExecutable.
En los sistemas de archivos UNIX, el paquete Gestión de metadatos (atributos de almacenamiento de archivos y archivos) se utiliza para verificar los nueve permisos de archivos.
Se utiliza para verificar el permiso otorgado al archivo.
File.isDirectory (), File.isFile () y File.length () Files.isDirectory (ruta, LinkOption …), Files.isRegularFile (ruta, LinkOption …) y Files.size (ruta) Se utiliza para recuperar los metadatos del archivo.
File.lastModified () y File.setLastModified (largo) Files.getLastModifiedTime (ruta, opción de enlace …) y Files.setLastMOdifiedTime (ruta, FileTime)
Los métodos de archivo que establecen varios atributos: setExecutable, setReadable, setReadOnly, setWritable Estos métodos son reemplazados por el método de Archivos setAttribute (Path, String, Object, LinkOption …).
archivo nuevo (padre, «archivo nuevo») parent.resolve («archivo nuevo») Realiza las operaciones de Path.
File.renameTo Files.move Se utiliza para mover un archivo al directorio.
File.delete Files.delete Se utiliza para eliminar un archivo o directorio.
File.createNewFile Files.createFile Se utiliza para crear nuevos archivos.
File.deleteOnSalir Reemplazado por la opción DELETE_ON_CLOSE especificada en el método createFile.
File.createTempFile Files.createTempFile (Ruta, Cadena, FileAttributes ), Files.createTempFile (Ruta, Cadena, Cadena, FileAttributes ) Crea un nuevo archivo y también escribe en el archivo utilizando Stream I / O. También realiza operaciones de lectura y escritura utilizando Channel I / O.
El archivo existe Files.exists y Files.notExists Comprueba o verifica si el archivo existe o no.
File.compareTo y es igual a Path.compareTo y es igual a Se utiliza para comparar dos caminos.
File.getAbsolutePath y getAbsoluteFile Path.toAbsolutePath Convierte el camino
File.getCanonicalPath y getCanonicalFile Path.toRealPath o normalizar Se utiliza para normalizar (eliminar redundancias) la ruta y también convertir la ruta en una ruta real.
File.toURI Path.toURI Convierte la ruta al URI.
File.isHidden Files.isHidden Se utiliza para recuperar información sobre el archivo.
File.list y listFiles Path.newDirectoryStream Se utiliza para registrar el contenido de un directorio.
File.mkdir y mkdirs Files.createDirectory Se utiliza para crear un directorio.
File.listRoots FileSystem.getRootDirectories Se utiliza para registrar los archivos del directorio raíz del sistema.
File.getTotalSpace, File.getFreeSpace, File.getUsableSpace FileStore.getTotalSpace, FileStore.getUnallocatedSpace, FileStore.getUsableSpace, FileStore.getTotalSpace Se utiliza para almacenar los atributos del archivo.

Algunas otras comparaciones son:

  • La clase File está más orientada a objetos que la clase Path.
  • El flujo de E / S basado en Path API es menos costoso que la clase File, desde el punto de vista de GC.
  • A menudo, la clase Path arroja la IOException y devuelve un valor booleano cuando se realiza cualquier operación.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Biología – Clasificación de organismos

apple touch icon@2

cola – Diferencia entre «poner en cola» y «sacar de cola»