Método Java java.nio.file.Files isReadable()

Java File Java java.nio.file.Files


java.nio.file.Files.isReadable(Path path)es un método de utilidad de la API de operaciones de archivos de Java NIO (New I/O), utilizado para comprobar si el archivo en la ruta especificada es legible. Este método pertenece a lajava.nio.file.Filesclase de utilidad, que proporciona una manera simple de verificar la legibilidad del archivo sin tener que abrirlo realmente.

Definición del método

public static boolean isReadable(Path path)

Descripción de parámetros

  • path: la ruta del archivo a comprobar, de tipojava.nio.file.Path

Valor de retorno

  • DevuelvebooleanTipo:
    • true: si el archivo existe y la JVM actual tiene permiso para leerlo
    • false: si el archivo no existe o la JVM actual no tiene permiso de lectura

Características del método

Comprobación de seguridad

isReadable()El método realiza una comprobación de seguridad para verificar si la máquina virtual de Java actual tiene permiso para leer el archivo en la ruta especificada. Esto es diferente de comprobar simplemente si el archivo existe, porque incluso si el archivo existe, puede no ser legible debido a restricciones de permisos.

Operación no bloqueante

Este método realiza una comprobación no bloqueante e instantánea; no abre realmente el archivo ni realiza ninguna operación de I/O, por lo que la sobrecarga de rendimiento es muy pequeña.

Relación con la existencia del archivo

Si el archivo no existe, el método devuelve directamentefalse. Para comprobar si el archivo existe por separado, se debe usarFiles.exists()método.


Ejemplo de uso

Uso básico

Ejemplo

import java.nio.file.*;

public class IsReadableExample {
    public static void main(String[] args) {
        Path filePath = Paths.get("example.txt");
       
        if (Files.isReadable(filePath)) {
            System.out.println("El archivo es legible");
        } else {
            System.out.println("El archivo no es legible o no existe");
        }
    }
}

Combinar con otras comprobaciones

Ejemplo

Path filePath = Paths.get("data/config.properties");

if (Files.exists(filePath) && Files.isReadable(filePath)) {
    // Leer el contenido del archivo de forma segura
    List<String> lines = Files.readAllLines(filePath);
    // Procesar el contenido del archivo...
} else {
    System.err.println("El archivo de configuración no existe o no es legible");
}

Notas

Condición de carrera

Debido a que el sistema de archivos es dinámico,isReadable()el resultado puede quedar inválido inmediatamente después de que el método retorne (por ejemplo, si el archivo se elimina o se modifican los permisos). Por lo tanto, en código crítico, se debe estar preparado para manejar lo que pueda ocurrir al leer realmente el archivo más adelante.IOException。

Enlace simbólico

Si la ruta apunta a un enlace simbólico, este método comprueba la legibilidad del archivo de destino final, no el enlace en sí.

Modelo de permisos

Este método comprueba los permisos del proceso JVM, no los del usuario actual. En entornos de seguridad especiales (como cuando SecurityManager está habilitado), el resultado puede verse afectado.


Métodos relacionados

  • Files.exists(Path path): comprueba si el archivo existe
  • Files.isWritable(Path path): comprueba si el archivo es escribible
  • Files.isExecutable(Path path): comprueba si el archivo es ejecutable
  • Files.isRegularFile(Path path): comprueba si es un archivo regular (no un directorio, enlace simbólico, etc.)

Mejores prácticas

  1. **No dependas únicamente de isReadable()**: prepárate siempre para manejar las excepciones de I/O que puedan ocurrir posteriormente
  2. Combina los métodos de comprobación: utilízalos en combinación según tus necesidadesexists(), isReadable(), isRegularFile()y otros métodos
  3. Considera usar try-with-resources: al leer realmente el archivo, usa try-with-resources para garantizar la liberación de recursos

Ejemplo

Path filePath = Paths.get("important.data");

if (Files.isReadable(filePath)) {
    try (BufferedReader reader = Files.newBufferedReader(filePath)) {
        // Leer el archivo de forma segura
    } catch (IOException e) {
        // Manejar las posibles excepciones
    }
}

Mediante el uso adecuado delisReadable()método, se puede realizar una comprobación preliminar antes de intentar leer el archivo, mejorando la robustez y la experiencia del usuario del programa.

Java File Java java.nio.file.Files

Otras extensiones