En estas lecciones verá cómo la nueva biblioteca NIO aumenta, e incluso puede reemplazar, las clases de E/S heredadas que han existido desde los…
En estas lecciones verá cómo la nueva biblioteca NIO aumenta, e incluso puede reemplazar, las clases de E/S heredadas que han existido desde los primeros días de Java. La antigua API de archivos se usa en muchos proyectos, marcos y bibliotecas antiguos; y a pesar de su antigüedad, la API de archivos heredada no está obsoleta. De esta manera, aún puede usarla con cualquiera de las últimas versiones de Java.
Descubra cómo las nuevas clases admiten enlaces simbólicos, atributos de archivo adecuados, metadatos, ACL y mucho más. También aprenderá a crear directorios, archivos y almacenamiento temporal, y compararemos y contrastaremos el soporte heredado para estas operaciones con la nueva y mejorada biblioteca NIO, que es mucho más intuitiva y robusta, y es compatible con las clases heredadas, lo que le permite evolucionar gradualmente el código existente.
Es probable que los nuevos desarrollos usen la biblioteca NIO sin mirar atrás, y después de estas lecciones, sabrá cómo aprovecharla al máximo.
Objetivos de aprendizaje:
- Describir la nueva biblioteca NIO
- Explicar cómo pueden coexistir los paquetes I/O y NIO
- Comprender cómo crear un almacenamiento temporal
- Reconocer las nuevas clases de ayuda Archivos y rutas
Habilidades que obtendrás
Estructura de directoriosE/S de archivosEstructura de archivosJava 11Interfaz de nombres y directorios de JavaJavadocLo que aprenderás
- Describir la nueva biblioteca NIO y cómo amplía o reemplaza las clases de E/S heredadas
- Explicar cómo los paquetes de E/S heredados y NIO pueden coexistir y permanecer compatibles
- Crear directorios, archivos y almacenamiento temporal usando los enfoques nuevos y heredados
- Reconocer las nuevas clases auxiliares Files y Paths
- Comparar Java.io.File con Java.nio.Path para operaciones de archivos
- Usar soporte de NIO para enlaces simbólicos, atributos de archivos, metadatos y ACL
Puntos clave
- La nueva biblioteca NIO amplía e incluso puede reemplazar las clases de E/S heredadas que han existido desde los primeros días de Java.
- A pesar de su antigüedad, la API de archivos heredada no está deprecada y todavía se puede usar con cualquiera de las últimas versiones de Java.
- La biblioteca NIO es más intuitiva y robusta y es compatible con las clases heredadas, lo que permite que el código existente evolucione incrementalmente.
- Las nuevas clases de NIO admiten enlaces simbólicos, atributos de archivo adecuados, metadatos y ACL.
- El nuevo desarrollo probablemente usará la biblioteca NIO, mientras que la API de archivos heredada permanece en uso en muchos proyectos antiguos, frameworks y bibliotecas.
Preguntas frecuentes
¿Qué cubre este curso?
Cubre cómo la nueva biblioteca NIO amplía y puede reemplazar las clases de E/S heredadas, cómo los paquetes de E/S y NIO coexisten, cómo crear directorios, archivos y almacenamiento temporal, y las nuevas clases auxiliares Files y Paths. También compara Java.io.File con Java.nio.Path.
¿Se puede usar la API de archivos Java heredada?
Sí. La API de archivos heredada no está deprecada a pesar de su antigüedad y se puede usar con cualquiera de las últimas versiones de Java, y se usa en muchos proyectos antiguos, frameworks y bibliotecas.
¿Por qué usar la biblioteca NIO sobre las clases heredadas?
La biblioteca NIO es mucho más intuitiva y robusta, admite enlaces simbólicos, atributos de archivo adecuados, metadatos y ACL, y es compatible con las clases heredadas para que pueda evolucionar incrementalmente el código existente.
¿Qué habilidades adquiriré en este curso?
El curso cubre estructura de directorios, E/S de archivos, estructura de archivos, Java 11, Interfaz de Nomenclatura y Directorio de Java y Javadoc.
¿Qué lecciones se incluyen?
Las lecciones son Java.io.File vs. Java.nio.Path; Java.io.File y Java.nio.Path; y Creación y Manipulación de Almacenamiento Temporal.
Transcripción
Transcripción
Hola, bienvenido de nuevo. Scott Stanlick, aquí. Vamos a echar un vistazo a file.io en este módulo. Estas lecciones cubrirán la forma antigua de hacer las cosas, la nueva forma de hacer las cosas. Vamos a echar un vistazo a la creación y manipular el almacenamiento temporal, y demostraremos cómo escribir un buscador de archivos usando técnicas de búsqueda primero en profundidad. En esta primera lección, vamos a comparar y contrastar la forma en que las cosas han sido siempre a cómo están las cosas ahora con IO. Así que si te fijas aquí, algunas cosas que solo quiero mencionar. IO existe desde Java 1.0, y no era la mejor biblioteca de IO. Tuvo algunos problemas. Y esos problemas han sido abordados desde entonces. Estoy usando algo llamado java.nio, o el nuevo IO. Desde Java 7, puede elegir entre cualquiera de ellos. En el NIO, esta nueva biblioteca trae la misma funcionalidad que teníamos con java.io, pero con mejoras masivas. Y también hay una manera fácil de migrar sin esfuerzo entre los dos. El java.io heredado no se recomienda para nuevos desarrollos, pero no hay planes para desaprobarlo. no va a ninguna parte porque se usa en todas partes. Así que vamos a echar un vistazo a un par de tipos aquí, uno llamado java.nio.file.Path, que hará todo lo que hizo ese archivo, y en general de una mejor manera. Así que entremos justo aquí. Érase una vez, si queríamos crear un archivo, diríamos nuevo Archivo. Y luego podríamos dar la vuelta y eliminar el archivo. con archivo.borrar. Y tal vez funcionó, tal vez no, pero la respuesta fue mediocre, sin duda. Hubo un manejo de errores deficiente, con pocas excepciones. El resultado podría ser que no existe. No tienes permisos. Había muchas deficiencias con esa API. La nueva forma de hacer esto es decir Path.of Foo.java. Y si intenta usar el método de eliminación en la clase Archivos y páselo por esta ruta, y el archivo no existe, obtendrás una muy buena excepción. Como por ejemplo, puede lanzar una NoSuchFileException si no existe. Pero hay muchas otras excepciones. que este tipo te puede presentar que te explican muy bien por qué puede no haber funcionado. El apoyo entre el nuevo IO y el legado es, como mencioné anteriormente, es fácil. Entonces, el viejo mundo era Quiero crear un nuevo archivo. Puedes pasarle las partes, la carpeta /java, el archivo Foo.java. Lo mismo ocurre con Paths.get. Paths es la nueva forma de hacerlo. Si desea intercambiar entre lo antiguo y lo nuevo, el archivo tiene un toPath, que es la manera de hacer que lo viejo parezca nuevo. Y el nuevo tiene un toFile, que es una forma de hacer que lo nuevo parezca viejo. Y así, dependiendo de su contexto, es posible que necesite utilizar una técnica u otra, pero los tienes a ambos disponibles en cualquier momento. Había una forma de obtener metadatos de un archivo. Así que eso no ha cambiado mucho. Es solo un poco diferente en la forma en que lo usas. Así que diremos Archivo, este es el viejo mundo, y diremos Camino, ese es el nuevo mundo. Y entonces tenemos un archivo y una ruta, y java.io se veía así. Estos fueron los métodos involucrados en la obtención de metadatos sobre un archivo. ¿Está en un directorio? ¿Puedo leerlo, escribirlo? ¿Es ejecutable, está oculto? Todas esas ideas. Y usando la nueva API, usamos la clase Archivos. La clase Archivos tiene muchos métodos, que usamos cuando pasamos la ruta a esos métodos, y nos dirá básicamente las mismas cosas. Pero estos, son mucho más robustos. en la forma en que fueron diseñados. Es más nuevo, y aprendimos nuestras lecciones. Así es como podríamos haber trabajado con un archivo usando java.io, entonces un nuevo archivo. y lo voy a poner aqui en src/test/java/com/acme/io. Debo tener una carpeta en algún lugar aquí como esa. Sí, com.acme.io. Puedo pedir un nombre de archivo canónico. Puedo preguntar si existe o no. Y luego, de la misma manera, también puedo convertirlo al nuevo mundo. y validarlo de nuevo. Así que aquí vamos, Files.exist, file.toPath. Así que ahora tomo el viejo y lo convierto en un camino. Y esto es muy parecido. Estoy creando el mismo archivo, y voy a preguntar por su ruta absoluta y si existe o no. Y del mismo modo, puedo convertir del nuevo mundo a un archivo, para que pueda convertirlo en legado y haz la misma validación de nuevo. En el espacio java.io, el legado, había un método llamado listFiles. Si desea obtener un directorio de todos los archivos en un directorio, diría listFiles, y devolvería una matriz, un tipo de archivo. El nuevo mundo es un poco diferente. Dices Files.newDirectoryStream, y ya hemos visto java.util.streams con los filtros y mapas y traducciones y todas esas cosas buenas. Files.newDirectoryStream lleva su camino a la fuente y devuelve un flujo de directorio llamado rutas aquí. Y en este caso, podemos decir para cada elemento en el flujo, vamos a imprimirlo. Así que esta es solo la nueva forma de listar los archivos que existen en un directorio. Aprecio que estés mirando.
Aprende sobre la marcha
Lleva tu aprendizaje a todas partes: la app de KnowledgeCity te permite ver las lecciones sobre la marcha.