Le Tutoriel de Java FileWriter
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
- Le Tutoriel de Java CharArrayWriter
- Le Tutoriel de Java FilterReader
- Le Tutoriel de Java FilterWriter
- Le Tutoriel de Java PrintStream
- Le Tutoriel de Java BufferedReader
- Le Tutoriel de Java BufferedWriter
- Le Tutoriel de Java StringReader
- Le Tutoriel de Java StringWriter
- Le Tutoriel de Java PipedReader
- Le Tutoriel de Java LineNumberReader
- Le Tutoriel de Java PushbackReader
- Le Tutoriel de Java PrintWriter
- Tutoriel sur les flux binaires Java IO
- Le Tutoriel de Java IO Character Streams
- Le Tutoriel de Java BufferedOutputStream
- Le Tutoriel de Java ByteArrayOutputStream
- Le Tutoriel de Java DataOutputStream
- Le Tutoriel de Java PipedInputStream
- Le Tutoriel de Java OutputStream
- Le Tutoriel de Java ObjectOutputStream
- Le Tutoriel de Java PushbackInputStream
- Le Tutoriel de Java SequenceInputStream
- Le Tutoriel de Java BufferedInputStream
- Le Tutoriel de Java Reader
- Le Tutoriel de Java Writer
- Le Tutoriel de Java FileReader
- Le Tutoriel de Java FileWriter
- Le Tutoriel de Java CharArrayReader
- Le Tutoriel de Java ByteArrayInputStream
- Le Tutoriel de Java DataInputStream
- Le Tutoriel de Java ObjectInputStream
- Le Tutoriel de Java InputStreamReader
- Le Tutoriel de Java OutputStreamWriter
- Le Tutoriel de Java InputStream
- Le Tutoriel de Java FileInputStream
Show More