Faites-vous cela à des fins de journalisation ? Si c'est le cas, il existe plusieurs bibliothèques pour cela . Deux des plus populaires sont Log4j y Retour à la case départ .
Java 7+
Pour une tâche ponctuelle, le Classe de fichiers facilite les choses :
try {
Files.write(Paths.get("myfile.txt"), "the text".getBytes(), StandardOpenOption.APPEND);
}catch (IOException e) {
//exception handling left as an exercise for the reader
}
Attention : L'approche ci-dessus génère un NoSuchFileException
si le fichier n'existe pas encore. Il n'ajoute pas non plus de nouvelle ligne automatiquement (ce que vous souhaitez souvent lors de l'ajout d'un fichier texte). Une autre approche consiste à passer les deux commandes CREATE
y APPEND
qui crée d'abord le fichier s'il n'existe pas déjà :
private void write(final String s) throws IOException {
Files.writeString(
Path.of(System.getProperty("java.io.tmpdir"), "filename.txt"),
s + System.lineSeparator(),
CREATE, APPEND
);
}
Toutefois, si vous écrivez plusieurs fois dans le même fichier, les extraits ci-dessus doivent ouvrir et fermer le fichier sur le disque plusieurs fois, ce qui est une opération lente. Dans ce cas, un BufferedWriter
est plus rapide :
try(FileWriter fw = new FileWriter("myfile.txt", true);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter out = new PrintWriter(bw))
{
out.println("the text");
//more code
out.println("more text");
//more code
} catch (IOException e) {
//exception handling left as an exercise for the reader
}
Notes :
- Le deuxième paramètre de la fonction
FileWriter
lui indiquera d'ajouter au fichier, plutôt que d'écrire un nouveau fichier. (Si le fichier n'existe pas, il sera créé).
- L'utilisation d'un
BufferedWriter
est recommandé pour un écrivain coûteux (tel que FileWriter
).
- L'utilisation d'un
PrintWriter
vous donne accès à println
que vous avez probablement l'habitude d'utiliser dans le cadre du programme System.out
.
- Mais le
BufferedWriter
y PrintWriter
ne sont pas strictement nécessaires.
Ancienne Java
try {
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("myfile.txt", true)));
out.println("the text");
out.close();
} catch (IOException e) {
//exception handling left as an exercise for the reader
}
Traitement des exceptions
Si vous avez besoin d'une gestion robuste des exceptions pour les anciennes versions de Java, cela devient très verbeux :
FileWriter fw = null;
BufferedWriter bw = null;
PrintWriter out = null;
try {
fw = new FileWriter("myfile.txt", true);
bw = new BufferedWriter(fw);
out = new PrintWriter(bw);
out.println("the text");
out.close();
} catch (IOException e) {
//exception handling left as an exercise for the reader
}
finally {
try {
if(out != null)
out.close();
} catch (IOException e) {
//exception handling left as an exercise for the reader
}
try {
if(bw != null)
bw.close();
} catch (IOException e) {
//exception handling left as an exercise for the reader
}
try {
if(fw != null)
fw.close();
} catch (IOException e) {
//exception handling left as an exercise for the reader
}
}