Méthode isReadable() de java.nio.file.Files en Java
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
Description du paramètre
path: Le chemin du fichier à vérifier, de typejava.nio.file.Path
Valeur de retour
- Renvoie
booleanType :true: Si le fichier existe et que la JVM actuelle a l'autorisation de lire le fichierfalse: 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
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
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 existeFiles.isWritable(Path path): Vérifier si le fichier est accessible en écritureFiles.isExecutable(Path path): Vérifier si le fichier est exécutableFiles.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
- **Ne vous fiez pas uniquement à isReadable()** : Soyez toujours prêt à gérer les exceptions d'E/S qui peuvent survenir plus tard.
- Combinez les méthodes de vérification: Combinez et utilisez selon les besoins
exists(),isReadable(),isRegularFile()et d'autres méthodes - 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
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 java.nio.file.Files