Un fichier est ouvert en lecture en créant un objet FileInputStream.
Le constructeur FileInputStream(String filename) lève FileNotFoundException si le fichier n'existe pas.
FileNotFoundException est une sous-classe de IOException.
Pour lire un fichier, utilisez la méthode read(), qui lit un octet et renvoie une valeur entière.
read() renvoie -1 lorsque la fin du fichier est atteinte et renvoie IOException en cas d'erreur.
Après utilisation, le fichier doit être fermé avec la méthode close() pour libérer des ressources système.
Ne pas fermer le fichier peut provoquer des fuites de mémoire.
L'exemple de programme utilise read() pour afficher le contenu d'un fichier et utilise des blocs try/catch pour gérer les erreurs d'E/S.
Remarque : En Java, une fuite de mémoire se produit lorsque le programme ne libère pas les ressources mémoire qu'il n'utilise plus, gardant ces ressources occupées inutilement. Bien que le langage dispose d'un garbage collection automatique pour les objets non référencés, cette collection ne traite pas directement les ressources externes telles que les fichiers ou les connexions réseau. Si vous ne fermez pas le fichier, les ressources système restent occupées, les performances se dégradent ainsi que les erreurs et échecs (lors de la tentative d'ouverture d'un autre fichier, par exemple).
L'exemple précédent ferme le flux après le bloc try pour lire le fichier.
Java permet une approche alternative : appeler close() à l'intérieur d'un bloc final.
Avec le bloc enfin, le fichier est fermé quelle que soit la fin du bloc try.
Cette approche garantit la fermeture du fichier, même si une exception se produit.
Le bloc try accède au fichier, et finalement est utilisé exclusivement pour le fermer.
L'avantage d'utiliser le bloc enfin est de garantir la fermeture du fichier, même si une exception non-E/S se produit.
Bien qu'elle ne soit pas critique dans les petits programmes, cette approche est essentielle dans les programmes plus importants pour éviter les problèmes.
Utiliser enfin permet d'éviter les tracas liés au traitement des fichiers non fermés en cas d'exceptions inattendues.
Encapsuler l'ouverture et l'accès aux fichiers dans un seul bloc try et utiliser enfin pour le fermer est une bonne pratique.
Cette approche peut simplifier le code et assurer la libération des ressources.
fin est initialisé à null et, dans le bloc final, le fichier n'est fermé que si fin n'est pas nul.
Cela empêche l'appel de close() si une exception se produit lors de l'ouverture du fichier.
La séquence try/catch peut être simplifiée, car FileNotFoundException est une sous-classe de IOException.
Attraper uniquement IOException élimine le besoin d'intercepter FileNotFoundException séparément.
Dans ce cas, le message d'exception standard décrit l'erreur.
...
} catch(IOException exc) {
System.out.println("Erreur d'E/S : " exc);
} enfin {
...
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!