Méthode isReadable() de java.nio.file.Files en Java

Java File Java java.nio.file.Files


java.nio.file.Files.isReadable(Path path)est une méthode utilitaire de l'API d'opérations sur les fichiers Java NIO (New I/O), utilisée pour vérifier si le fichier au chemin spécifié est lisible. Cette méthode appartient àjava.nio.file.Filesclasse utilitaire, offrant un moyen simple de vérifier la lisibilité d'un fichier sans réellement ouvrir le fichier.

Définition de méthode

public static boolean isReadable(Path path)

Description du paramètre

  • path: Le chemin du fichier à vérifier, de typejava.nio.file.Path

Valeur de retour

  • RenvoiebooleanType :
    • true: Si le fichier existe et que la JVM actuelle a l'autorisation de lire le fichier
    • false: Si le fichier n'existe pas ou que la JVM actuelle n'a pas l'autorisation de lecture

Caractéristiques de la méthode

Vérification de sécurité

isReadable()La méthode effectue une vérification de sécurité pour déterminer si la machine virtuelle Java actuelle a l'autorisation de lire le fichier au chemin spécifié. Cela diffère de la vérification directe de l'existence du fichier, car même si le fichier existe, il peut être illisible en raison de restrictions d'autorisation.

Opération non bloquante

Cette méthode effectue une vérification non bloquante et instantanée. Elle n'ouvre pas réellement le fichier et n'effectue aucune opération d'E/S, de sorte que la surcharge de performance est très faible.

Relation avec l'existence du fichier

Si le fichier n'existe pas, la méthode renvoie directementfalse. Pour vérifier si le fichier existe séparément, utilisez laFiles.exists()méthode.


Exemples d'utilisation

Utilisation de base

Exemple

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("File is readable");
        } else {
            System.out.println("File is not readable or does not exist");
        }
    }
}

Combinaison avec d'autres vérifications

Exemple

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

if (Files.exists(filePath) && Files.isReadable(filePath)) {
    // Lire le contenu du fichier en toute sécurité
    List<String> lines = Files.readAllLines(filePath);
    // Traiter le contenu du fichier...
} else {
    System.err.println("Le fichier de configuration n'existe pas ou n'est pas lisible");
}

Précautions

Condition de concurrence

Étant donné que le système de fichiers est dynamique,isReadable()le résultat peut devenir invalide immédiatement après le retour de la méthode (par exemple, le fichier est supprimé ou les permissions sont modifiées). Par conséquent, dans le code critique, vous devez être prêt à gérer les exceptions qui peuvent survenir lors de la lecture effective du fichier plus tard.IOException。

Liens symboliques

Si le chemin pointe vers un lien symbolique, cette méthode vérifie la lisibilité du fichier cible final, et non celle du lien lui-même.

Modèle de permissions

Cette méthode vérifie les permissions du processus JVM, et non celles de l'utilisateur actuel. Dans des environnements de sécurité particuliers (par exemple lorsque SecurityManager est activé), le résultat peut être affecté.


Méthodes associées

  • Files.exists(Path path): Vérifier si le fichier existe
  • Files.isWritable(Path path): Vérifier si le fichier est accessible en écriture
  • Files.isExecutable(Path path): Vérifier si le fichier est exécutable
  • Files.isRegularFile(Path path): Vérifier s'il s'agit d'un fichier ordinaire (et non d'un répertoire, d'un lien symbolique, etc.)

Bonnes pratiques

  1. **Ne vous fiez pas uniquement à isReadable()** : Soyez toujours prêt à gérer les exceptions d'E/S qui peuvent survenir plus tard.
  2. Combinez les méthodes de vérification: Combinez et utilisez selon les besoinsexists(), isReadable(), isRegularFile()et d'autres méthodes
  3. Envisagez d'utiliser try-with-resources: Utilisez try-with-resources lors de la lecture effective du fichier pour garantir que les ressources sont libérées

Exemple

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

if (Files.isReadable(filePath)) {
    try (BufferedReader reader = Files.newBufferedReader(filePath)) {
        // Lire le fichier en toute sécurité
    } catch (IOException e) {
        // Gérer les exceptions possibles
    }
}

En faisant un usage raisonnable de laisReadable()méthode, vous pouvez effectuer des vérifications préliminaires avant de tenter de lire un fichier, ce qui améliore la robustesse du programme et l'expérience utilisateur.

Java File Java java.nio.file.Files

Autres extensions