devstory

Le Tutoriel de Java FileWriter

  1. FileWriter
  2. Examples

1. FileWriter

FileWriter est une sous-classe d'OutputStreamWriter, utilisé pour écrire les fichiers texte.
FileWriter n'a pas d'autres méthodes que celles héritées d'OutputStreamWriter. En fait, vous pouvez utiliser OutputStreamWriter pour écrire des caractères sur n'importe quel objet. Toutefois, FileWriter est spécifiquement conçu pour écrire des caractères dans le fichier système.
FileWriter​ constructors
FileWriter​(File file)     
 
FileWriter​(FileDescriptor fd)     

FileWriter​(File file, boolean append)     

FileWriter​(File file, Charset charset)     

FileWriter​(File file, Charset charset, boolean append)     
 
FileWriter​(String fileName)     

FileWriter​(String fileName, boolean append)     

FileWriter​(String fileName, Charset charset)     

FileWriter​(String fileName, Charset charset, boolean append)
Remarque: Les constructeurs ayant le paramètre Charset sont ajoutés à FileWriter depuis la version Java 11. Par conséquent, si vous utilisez une version précédente de Java et souhaitez écrire un fichier avec un encodage spécifié, veuillez utiliser la classe OutputStreamWriter comme remplacement.

2. Examples

FileWriterEx1.java
package org.o7planning.filewriter.ex;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class FileWriterEx1 {

    public static void main(String[] args) throws IOException {
        // Windows: C:/SomeFolder/out-file.txt
        File outFile = new File("/Volumes/Data/test/out-file.txt");
        
        outFile.getParentFile().mkdirs();
        
        FileWriter fileWriter = new FileWriter(outFile);
        
        System.out.println("Writer file: " + outFile.getAbsolutePath());
        System.out.println("With encoding: " + fileWriter.getEncoding());

        fileWriter.write("Line 1");
        fileWriter.write("\n");
        fileWriter.write("Line 2");
        fileWriter.write("\n");
        fileWriter.write("Line 3");

        fileWriter.close();
    }
}
Output:
out-file.txt
Line 1
Line 2
Line 3
FileWriter vous permet également d'ajouter des données à un fichier existant, si le fichier n'existe pas, il sera créé.
FileWriterEx2.java
package org.o7planning.filewriter.ex;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class FileWriterEx2 {

    public static void main(String[] args) throws IOException {
        // Windows: C:/SomeFolder/out-file.txt
        File outFile = new File("/Volumes/Data/test/out-file.txt");
        
        outFile.getParentFile().mkdirs();
        
        // FileWriter(File outFile, boolean append)
        FileWriter fileWriter = new FileWriter(outFile, true);
        
        System.out.println("Writer file: " + outFile.getAbsolutePath());
        System.out.println("With encoding: " + fileWriter.getEncoding());

        fileWriter.write("Line 4");
        fileWriter.write("\n");
        fileWriter.append("Line 5").append("\n");
        fileWriter.close();
    }
}
Par exemple, utiliser FileWriter pour écrire un fichier avec un codage UTF-16, puis lire le fichier avec FileInputStream pour afficher les bytes du fichier.
FileWriter_UTF16_Ex1.java
package org.o7planning.filewriter.ex;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

public class FileWriter_UTF16_Ex1 {
    // Windows: C:/SomeFolder/out-utf16-file.txt
    private static final String filePath = "/Volumes/Data/test/out-utf16-file.txt";

    public static void main(String[] args) throws IOException {
        System.out.println("--- Write UTF-16 File ---");
        write_UTF16_File();
        
        System.out.println("--- Read File as Binary Stream ---");
        readAsInputStream();
    }

    private static void write_UTF16_File() throws IOException {
        File outFile = new File(filePath);
        outFile.getParentFile().mkdirs();

        // FileWriter(File outFile, boolean append)
        FileWriter fileWriter = new FileWriter(outFile, StandardCharsets.UTF_16);
        fileWriter.write("JP日本-八洲");
        fileWriter.close();
    }

    private static void readAsInputStream() throws IOException {
        File file = new File(filePath);

        FileInputStream fis = new FileInputStream(file);

        int byteCode;
        while ((byteCode = fis.read()) != -1) {
            System.out.println((char) byteCode + " " + byteCode);
        }
        fis.close();
    }
}
Output:
--- Write UTF-16 File ---
--- Read File as Binary Stream ---
þ 254
ÿ 255
0
J 74
0
P 80
e 101
å 229
g 103
, 44
0
- 45
Q 81
k 107
m 109
2 50
Vous trouverez ci-dessous une illustration des bytes du FileWriter et des bytes du fichier qui vient d'être écrit par FileWriter:
Les deux premiers bytes (254 255) du fichier UTF-16 sont utilisés pour marquer le début d'une donnée encodée en UTF-16.
Consulter mes articles sur InputStreamReader et OutputStreamWriter pour en savoir plus sur la façon dont Java lit et écrit les encodages UTF-16 et UTF-8.

Tutoriels Java IO

Show More