Este paquete, nos proporciona las clases necesarias para acceder a ficheros y solo está disponible desde Java 1.7.
No debemos confundir este paquete con java.io que se encarga de la entrada y salida en cualquier dispositivo, y entre ellos en ficheros. Este paquete se especializa únicamente en ficheros, y dispone de métodos más adecuados a su tratamiento.
Así mismo, la clase java.nio.file.Files dispone de métodos más adecuados para el tratamiento de ficheros en disco que su homónima java.io.File.
Clases del paquete
Clase | Descripción |
Files | Métodos estáticos para operar con fichero y directorios |
FileStore | Zona de almacenamiento de ficheros (puntos de montajes o unidades de disco) |
FileSystem | Proporciona la interface para acceder al sistema de ficheros y proporciona acceso a métodos para procesar directorios, rutas y ficheros |
FileSystems | Implementa los métodos para acceder al sistema de ficheros |
LinkPermission | Para crear enlaces “hard” y “symbolic” |
Paths | Métodos estáticos para obtener un path (ruta) desde varias string, o desde una URI. |
SimpleFileVisitor<T> | Clase con los comportamientos básicos al visitar ficheros y directorios, y que nos permite añadir los comportamientos que deseemos.
Ver: Files.walkFileTree() |
StandardWatchEventKinds | Define los tipos de eventos estándar |
Algunos métodos de Files
La clase Files, aporta métodos para más cosas aparte de la lectura de ficheros.
Utilizando otra de las clases del paquete, podemos definir permisos, solo útil en entornos Linux
Para crear un directorio, solo definimos un path, y lo creamos
Para crear un directorio temporal, hacemos
Para crear un fichero
Para copiar un fichero
Para mover un fichero
Leer fichero con Files
La utilización de este paquete, nos aporta mucha más claridad a la hora de programar, en este ejemplo, veremos cómo realizar un lectura de fichero, semejante a la que os mostramos en la clase LeerConBuffered, pero utilizando este paquete
Empezamos creando el path o ruta a donde se encuentra el fichero con
Estamos indicando en donde se encuentra el fichero, aunque no se realizara comprobación acerca de su existencia
Podíamos haber utilizado también
Y conseguiríamos el mismo resultado
Antes de abrirlo, podemos comprobar si existe
Utilizamos el método estático de Files, que recibe el path creado anteriormente, y en el segundo parámetro un array en donde podemos indicarle si queremos que siga los enlaces hard, simbólicos, o ninguno
Ahora, para crear el stream de entrada, utilizaremos otro método de Files
Este método, nos permite especificar la codificación del fichero como constantes de la clase StandarCharsets; mucho más cómodo….
Teniendo ya el Stream, deberíais saber escribir el resto de la clase. Solo tiene que leer todas las líneas del fichero y volcarlas a la consola.
Algo como esto:
La respuesta, prácticamente estaba toda resuelta; la única novedad, reside en la línea 30, que para saber el nombre del fichero que se ha intentado abrir, utilizamos un método de path que nos da su nombre