FileWriter Java

1. Vue d'ensemble

Dans ce didacticiel, nous allons apprendre et comprendre la classe FileWriter présente dans le package java.io.

2. FileWriter

FileWriter est un OutputStreamWriter spécialisé pour l'écriture de fichiers de caractères . Il n'expose aucune nouvelle opération mais fonctionne avec les opérations héritées desclasses OutputStreamWriter et Writer .

Jusqu'à Java 11, le FileWriter fonctionnait avec le codage de caractères par défaut et la taille de tampon d'octets par défaut. Cependant, Java 11 introduit quatre nouveaux constructeurs qui acceptent un jeu de caractères, permettant ainsi spécifié par l' utilisateur Charset . Malheureusement, nous ne pouvons toujours pas modifier la taille du tampon d'octets, et elle est définie sur 8192.

2.1. Instanciation du FileWriter

Il existe cinq constructeurs dans la classe FileWriter si nous utilisons une version Java antérieure à Java 11.

Jetons un coup d'œil à divers constructeurs:

public FileWriter(String fileName) throws IOException { super(new FileOutputStream(fileName)); } public FileWriter(String fileName, boolean append) throws IOException { super(new FileOutputStream(fileName, append)); } public FileWriter(File file) throws IOException { super(new FileOutputStream(file)); } public FileWriter(File file, boolean append) throws IOException { super(new FileOutputStream(file, append)); } public FileWriter(FileDescriptor fd) { super(new FileOutputStream(fd)); }

Java 11 a introduit quatre constructeurs supplémentaires:

public FileWriter(String fileName, Charset charset) throws IOException { super(new FileOutputStream(fileName), charset); } public FileWriter(String fileName, Charset charset, boolean append) throws IOException { super(new FileOutputStream(fileName, append), charset); } public FileWriter(File file, Charset charset) throws IOException { super(new FileOutputStream(file), charset); } public FileWriter(File file, Charset charset, boolean append) throws IOException { super(new FileOutputStream(file, append), charset); }

2.2. Ecrire une chaîne dans un fichier

Utilisons maintenant l'un des constructeurs FileWriter pour créer une instance de FileWriter , puis écrivons dans un fichier:

try (FileWriter fileWriter = new FileWriter("src/test/resources/FileWriterTest.txt")) { fileWriter.write("Hello Folks!"); }

Nous avons utilisé le constructeur d'argument unique du FileWriter qui accepte un nom de fichier. Nous utilisons ensuite l'opération write (String str) héritée de la classe Writer . Puisque le FileWriter est AutoCloseable , nous avons utilisé try-with-resources afin de ne pas avoir à fermer le FileWriter explicitement .

Lors de l'exécution du code ci-dessus, la chaîne sera écrite dans le fichier spécifié:

Hello Folks!

Le FileWriter ne garantit pas si le fichier FileWriterTest.txt sera disponible ou être créé. Cela dépend de la plate-forme sous-jacente.

Nous devons également noter que certaines plates-formes peuvent n'autoriser qu'une seule instance de FileWriter pour ouvrir le fichier. Dans ce cas, les autres constructeurs de la classe FileWriter échoueront si le fichier concerné est déjà ouvert.

2.3. Ajout d'une chaîne à un fichier

Nous devons souvent ajouter des données au contenu existant d'un fichier. Voyons maintenant un exemple de FileWriter qui prend en charge l'ajout:

try (FileWriter fileWriter = new FileWriter("src/test/resources/FileWriterTest.txt", true)) { fileWriter.write("Hello Folks Again!"); }

Comme nous pouvons le voir, nous avons utilisé le constructeur à deux arguments qui accepte un nom de fichier et un indicateur booléen ajouté . Passer l'indicateur append comme true crée un FileWriter qui nous permet d'ajouter du texte au contenu existant d'un fichier .

Lors de l'exécution du code, nous aurons la chaîne ajoutée au contenu existant du fichier spécifié:

Hello Folks!Hello Folks Again! 

3. Conclusion

Dans cet article, nous avons découvert la classe de commodité FileWriter et quelques méthodes de création de FileWriter . Nous l'avons ensuite utilisé pour écrire des données dans un fichier.

Comme toujours, le code source complet du didacticiel est disponible à l'adresse over sur GitHub.