18. Travailler avec les E/S de fichiers en Java
La gestion des fichiers est une partie essentielle de la programmation, et en Java, ce n'est pas différent. La capacité de lire et d'écrire des fichiers est cruciale pour de nombreux types d'applications, du traitement des données aux systèmes de gestion de contenu. Dans ce chapitre, nous explorerons comment Java gère les entrées/sorties (E/S), plus spécifiquement, comment travailler avec des fichiers à l'aide des classes et des interfaces disponibles dans l'API Java standard.
Streams et lecteurs/écrivains
Avant d'entrer dans les détails de la manipulation des fichiers en Java, il est important de comprendre la différence entre les flux et les lecteurs/écrivains. En termes simples, les flux sont des flux de données binaires et sont utilisés pour traiter des données binaires telles que des fichiers image ou vidéo. Les lecteurs et rédacteurs sont destinés aux caractères de texte et conviennent mieux à la lecture et à l'écriture de données texte telles que des fichiers .txt ou .csv.
Classes d'E/S fondamentales
Java fournit plusieurs classes dans son package java.io
pour travailler avec des fichiers. Certaines des classes les plus fondamentales incluent :
Fichier
: représente le chemin d'accès d'un fichier ou d'un répertoire et peut être utilisé pour créer, supprimer, inspecter et renommer des fichiers ou des répertoires.FileInputStream
etFileOutputStream
: autorisent respectivement la lecture et l'écriture de fichiers binaires.FileReader
etFileWriter
: facilitent respectivement la lecture et l'écriture de fichiers texte.BufferedReader
etBufferedWriter
: fournissent un tampon pour la lecture et l'écriture, ce qui peut améliorer les performances lors des opérations d'E/S fréquentes.
Lecture de fichiers avec Java
Pour lire un fichier en Java, vous pouvez utiliser la classe FileInputStream
pour les fichiers binaires ou FileReader
pour les fichiers texte. Voici un exemple simple de lecture d'un fichier texte :
essayez (lecteur BufferedReader = new BufferedReader (new FileReader ("file.txt"))) {
Ligne de ficelle ;
while ((line = reader.readLine()) != null) {
System.out.println(ligne);
}
} catch (IOException e) {
e.printStackTrace();
}
Ce code utilise un try-with-resources
pour garantir que le BufferedReader
est fermé après utilisation, évitant ainsi les fuites de ressources. La méthode readLine()
lit le fichier ligne par ligne jusqu'à ce que la fin du fichier (EOF) soit atteinte.
Écrire dans des fichiers avec Java
Pour écrire dans un fichier, vous pouvez utiliser la classe FileOutputStream
pour les fichiers binaires ou FileWriter
pour les fichiers texte. Vous trouverez ci-dessous un exemple de comment écrire dans un fichier texte :
essayez (BufferedWriterwriter = new BufferedWriter(new FileWriter("file.txt"))) {
write.write("Première ligne\n");
writer.write("Deuxième ligne\n");
} catch (IOException e) {
e.printStackTrace();
}
Tout comme la lecture, try-with-resources
est utilisé pour fermer BufferedWriter
une fois l'écriture terminée. La méthode write()
est utilisée pour écrire des chaînes dans le fichier.
Travailler avec des fichiers binaires
En ce qui concerne les fichiers binaires, vous devez utiliser FileInputStream
et FileOutputStream
. Voici un exemple de copie d'un fichier binaire :
essayez (FileInputStream in = new FileInputStream("input.bin");
FileOutputStream out = new FileOutputStream("output.bin")) {
octet[] tampon = nouvel octet[1024];
int octetsLire ;
while ((bytesRead = in.read(buffer)) != -1) {
out.write(buffer, 0, bytesRead);
}
} catch (IOException e) {
e.printStackTrace();
}
Cet exemple lit le fichier d'entrée en morceaux de 1 024 octets et écrit chaque morceau dans le fichier de sortie jusqu'à ce que la fin du fichier d'entrée soit atteinte.
Gestion des exceptions d'E/S
Les opérations d'E/S peuvent échouer pour diverses raisons, telles que des fichiers qui n'existent pas, un manque d'autorisations ou des problèmes matériels. C'est pourquoi la gestion des exceptions est cruciale lorsque l'on travaille avec des E/S en Java. Les opérations d'E/S renvoient une IOException
qui doit être interceptée ou déclarée dans l'en-tête de la méthode.
Nouvelles API d'E/S
Avec l'introduction de Java 7, l'API d'E/S a été étendue avec le package java.nio.file
, qui offre une approche plus moderne et flexible du travail avec les fichiers et les répertoires. Des classes comme Path
, Paths
et Files
ont rendu les opérations d'E/S plus intuitives et puissantes.
Conclusion
Travailler avec des fichiers en Java est une compétence essentielle pour tout programmeur. Grâce aux classes et méthodes fournies par l'API I/O, il est possible d'effectuer des opérations complexes de mmanière simple et efficace. Il est important de toujours gérer les exceptions d'E/S de manière appropriée et d'utiliser les dernières API lorsque cela est possible pour profiter des améliorations et des fonctionnalités supplémentaires qu'elles offrent.
La pratique de la lecture et de l'écriture de fichiers de différents formats et tailles vous aidera à vous familiariser avec les nuances des E/S en Java et vous préparera à gérer les besoins de stockage et de traitement des données de vos applications.
p>