Comment créer et écrire un fichier texte en Java ?

Avec le langage orienté objet, il est possible d'écrire aussi bien du texte que des données binaires. Voici comment.

Le langage Java offre de nombreuses possibilités dont celle d'écrire des données dans des fichiers. Il est possible d'écrire aussi bien du texte que des données binaires.

Dans toutes les versions de Java, la classe PrintWriter peut être utilisée pour écrire du texte dans un fichier. Il faut spécifier lors de la création de l'objet le fichier et l'encodage utilisés pour le texte. La méthode print() écrit les données à la suite de ce qui a déjà été écrit. La méthode println() effectue la même chose mais ajoute en plus un retour à la ligne après avoir écrit le texte. Si le fichier existe déjà, son contenu sera écrasé par le texte inséré.

PrintWriter writer = new PrintWriter(mon-fichier.txt, UTF-8);
writer.println(La première ligne);
writer.println(La deuxième ligne);
writer.close();

Si vous souhaitez ajouter des données binaires, il faut faire appel à la classe FileOutputStream. Elle fonctionne de la même manière et utilise la méthode write() pour écrire les données.

byte donnees[] = ...
FileOutputStream sortie = new FileOutputStream(mon-fichier);
sortie.write(donnees);
sortie.close();

Si vous utilisez le langage Java dans sa version 7 ou une version plus récente, vous pouvez utiliser la classe Files. Cette classe offre plus de possibilités. Pour les fichiers texte, vous pouvez par exemple stocker chaque ligne dans un tableau et écrire toutes les lignes en une seule commande. Vous pouvez également choisir de ne pas écraser les données existantes mais plutôt d'ajouter le nouveau texte à la fin du fichier.

List<String> lignes = Arrays.asList(La première ligne, La deuxième ligne);
Path fichier = Paths.get(mon-fichier.txt);
//La commande suivante écrit les lignes en écrasant le texte déjà présent dans le fichier
Files.write(fichier, lignes, Charset.forName(UTF-8));
//Pour écrire à la suite du fichier, il faut utiliser la commande suivante
Files.write(fichier, ligne, Charset.forName(UTF-8), StandardOpenOption.APPEND);

Pour les données binaires, la classe Files fonctionne de la même manière et permet également d'ajouter les nouvelles données à la fin des données existantes.

byte donnees[] = ...
Path fichier = Paths.get(mon-fichier);
//La commande suivante écrase les données existantes dans le fichier
Files.write(fichier, donnees);
//La commande suivante ajoute les nouvelles données à la fin du fichier
Files.write(fichier, donnees, StandardOpenOption.APPEND);

Java