Comment créer un fichier et y écrire en Java : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Création et écriture dans un fichier en Java : on comprend une fois pour toutes

\n\n

La question "How do I create a file and write to it?" est l'une des plus populaires sur Stack Overflow. Et ce n'est pas surprenant : travailler avec des fichiers est une base que chaque développeur Java maîtrise. Mais le diable, comme toujours, se cache dans les détails. Quelle classe choisir ? Comment ne pas perdre de données ? Comment gérer les exceptions ? Dans cet article, nous ne donnons pas seulement une réponse toute faite, mais nous analysons toutes les méthodes populaires, leurs avantages et inconvénients, afin que vous puissiez travailler en toute confiance avec les fichiers en Java.

\n\n

Nous aborderons la création d'un fichier et l'écriture dans celui-ci en Java, en commençant par les classiques FileWriter et BufferedWriter et en terminant par le moderne Files.writeString(). C'est parti !

\n\n

1. Méthode classique : FileWriter

\n\n

La manière la plus simple et intuitive de créer un fichier et d'y écrire du texte est d'utiliser java.io.FileWriter. Il est spécialement conçu pour l'écriture de flux de caractères.

\n\n

Comment ça fonctionne ?

\n

Le constructeur de FileWriter prend un nom de fichier (ou un objet File). Si le fichier n'existe pas, il sera créé automatiquement. Si le fichier existe, il sera écrasé (sauf si vous spécifiez le drapeau append).

\n\n
import java.io.FileWriter;\nimport java.io.IOException;\n\npublic class FileWriterExample {\n    public static void main(String[] args) {\n        try (FileWriter writer = new FileWriter("example.txt")) {\n            writer.write("Bonjour le monde ! C'est la première ligne.\\n");\n            writer.write("Et voici la deuxième ligne.");\n            System.out.println("Fichier créé et écrit avec succès !");\n        } catch (IOException e) {\n            System.err.println("Erreur lors du travail avec le fichier : " + e.getMessage());\n        }\n    }\n}\n
\n\n

Important : Nous utilisons try-with-resources (Java 7+). Cela garantit que le flux sera fermé automatiquement, même en cas d'exception. Oublier de fermer un FileWriter est l'une des erreurs les plus fréquentes chez les débutants.

\n\n

Quand utiliser FileWriter ?

\n
    \n
  • Pour l'écriture simple de petits fichiers texte.
  • \n
  • Lorsque de hautes performances ne sont pas requises.
  • \n
  • Pour un prototypage rapide.
  • \n
\n\n

Inconvénients

\n
    \n
  • Inefficace pour l'écriture de gros volumes de données (chaque appel à write() peut entraîner un appel système).
  • \n
  • Ne prend pas en charge la spécification de l'encodage (utilise l'encodage par défaut, ce qui peut causer des problèmes sur différentes plateformes).
  • \n
\n\n

2. Performance et fiabilité : BufferedWriter

\n\n

Si vous devez écrire beaucoup de données, utilisez BufferedWriter. Il encapsule FileWriter et ajoute une mise en mémoire tampon. Les données sont d'abord accumulées dans un tampon, puis écrites dans le fichier en un seul gros bloc. Cela accélère considérablement l'opération.

\n\n
import java.io.BufferedWriter;\nimport java.io.FileWriter;\nimport java.io.IOException;\n\npublic class BufferedWriterExample {\n    public static void main(String[] args) {\n        String[] lines = {"Ligne 1", "Ligne 2", "Ligne 3"};\n\n        try (BufferedWriter writer = new BufferedWriter(new FileWriter("buffered_example.txt"))) {\n            for (String line : lines) {\n                writer.write(line);\n                writer.newLine(); // Ajoute un saut de ligne, indépendamment du système d'exploitation\n            }\n            System.out.println("Fichier écrit via BufferedWriter.");\n        } catch (IOException e) {\n            System.err.println("Erreur : " + e.getMessage());\n        }\n    }\n}\n
\n\n

Notez la méthode newLine(). Contrairement à \\n, elle utilise le séparateur de ligne du système, ce qui rend votre code multiplateforme.

\n\n

Quand utiliser BufferedWriter ?

\n
    \n
  • Pour l'écriture de gros fichiers texte.
  • \n
  • Lorsque la performance est importante
  • \n

Blogs

Book Recommendations