Exemple Java FileWriter

Java FileWriter

  • La classe FileWriter de Java fait partie du package java.io.
  • FileWriter est une sous-classe de la classe java.io.OutputStreamWriter.
  • FileWriter est destiné à écrire des flux de caractères.
  • FileWriter est utilisé pour écrire dans des fichiers de caractères. Ses méthodes write() vous permettent d’écrire des caractères ou des chaînes dans un fichier.
  • Les FileWriters sont généralement enveloppés par des objets Writer de niveau supérieur, tels que BufferedWriter ou PrintWriter, qui fournissent de meilleures performances et des méthodes de niveau supérieur et plus flexibles pour écrire des données.

Constructeurs FileWriter

  1. FileWriter(File file): Crée un objet FileWriter en utilisant l’objet File spécifié. Il lance une IOException si le fichier existe mais est un répertoire plutôt qu’un fichier ordinaire ou n’existe pas mais ne peut pas être créé, ou ne peut pas être ouvert pour une autre raison.
  2. FileWriter(File file, boolean append): Crée un objet FileWriter en utilisant l’objet File spécifié. Si le deuxième argument est vrai, alors les octets seront écrits à la fin du fichier plutôt qu’au début. Il lance une IOException si le fichier existe mais est un répertoire plutôt qu’un fichier régulier, ou s’il n’existe pas mais ne peut pas être créé, ou s’il ne peut pas être ouvert pour toute autre raison.
  3. FileWriter(FileDescriptor fd): Crée un objet FileWriter associé au descripteur de fichier spécifié.
  4. FileWriter(String fileName): Crée un objet FileWriter en utilisant le nom de fichier spécifié. Il lance une IOException si le fichier nommé existe mais est un répertoire plutôt qu’un fichier régulier, ou s’il n’existe pas mais ne peut pas être créé, ou s’il ne peut pas être ouvert pour toute autre raison.
  5. FileWriter(String fileName, boolean append): Crée un objet FileWriter en utilisant le nom de fichier spécifié avec un booléen indiquant s’il faut ou non ajouter les données écrites. Si le deuxième argument est vrai, alors les données seront écrites à la fin du fichier plutôt qu’au début. Il lance une IOException si le fichier nommé existe mais est un répertoire plutôt qu’un fichier régulier, ou s’il n’existe pas mais ne peut pas être créé, ou s’il ne peut pas être ouvert pour toute autre raison.

Exemple de FileWriter Java

FileWriter hérite de la méthode des classes java.io.OutputStreamWriter et java.io.Writer. Examinons les méthodes ci-dessous avec des exemples.

write(int c)

Cette méthode écrit un seul caractère spécifié par int c.

package com.journaldev.io.filewriter;

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

/**
 * Java write file using FileWriter write method
 * 
 * @author pankaj
 *
 */
public class FileWriterWriteIntExample {

	public static void main(String[] args) {
		FileWriter fileWriter = null;
		try {
			fileWriter = new FileWriter("D:/data/file.txt");
			// méthode héritée de java.io.OutputStreamWriter 
			fileWriter.write(65);
			fileWriter.write(66);
			fileWriter.write(67);
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			try {
				if (fileWriter != null) {
					fileWriter.flush();
					fileWriter.close();					
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

FileWriter implémente l’interface AutoCloseable, donc nous pouvons utiliser try avec ressources lors de l’utilisation de la classe FileWriter.

package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file using FileWriter write method using try with resource
 * 
 * @author pankaj
 *
 */
public class FileWriterWriteIntTryWithResource {

	public static void main(String[] args) {
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			// méthode héritée de java.io.OutputStreamWriter 
			fileWriter.write(65);
			fileWriter.write(66);
			fileWriter.write(67);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

Note: Dans le programme ci-dessus, fileWriter.write(65) écrira A dans le fichier car 65 est la valeur décimale pour le caractère A, donc l’entier 65 sera converti en caractère A et de même pour les autres.

write(String str, int off, int len)

Cette méthode écrit une partie de la chaîne str de off à len.

  • str: Chaîne à écrire
  • off: Décalage à partir duquel commencer à lire les caractères
  • len: Nombre de caractères à écrire

Si la valeur du paramètre len est négative, aucun caractère n’est écrit.

package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file using FileWriter write(String  s,  int  off,  int  len) method
 * 
 * @author pankaj
 *
 */
public class FileWriterWriteStringExample {

	public static void main(String[] args) {
		String data = "This is FileWriter Example.";
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			// méthode héritée de java.io.OutputStreamWriter 
			fileWriter.write(data, 8, 10);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

write(char[] cbuf, int off, int len)

Cette méthode écrit une portion d’un tableau de caractères spécifiée par char[] cbuf à partir de int off jusqu’à int len.

  • cbuf: Un tableau de caractères
  • off: Décalage à partir duquel commencer à lire les caractères
  • len : Nombre de caractères à écrire
package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file using FileWriter write(char[] cbuf,  int  off,  int  len) method
 * 
 * @author pankaj
 *
 */
public class FileWriterWriteCharArray {

	public static void main(String[] args) {
		char[] data = "This is FileWriter Example.".toCharArray();
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			// méthode héritée de java.io.OutputStreamWriter 
			fileWriter.write(data, 8, 10);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

write(char[] cbuf)

Cette méthode écrit le tableau de caractères spécifié par cbuf.

package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file using FileWriter write(char[] cbuf) method
 * 
 * @author pankaj
 *
 */
public class FileWriterWriteCharArrayExample {

	public static void main(String[] args) {
		char[] data = "This is FileWriter Example.".toCharArray();
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			// méthode héritée de java.io.Writer 
			fileWriter.write(data);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

write(String str)

Cette méthode écrit une valeur de chaîne dans le fichier spécifié par str.

package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file using FileWriter write(String  str) method
 * 
 * @author pankaj
 *
 */
public class FileWriterWriteString {

	public static void main(String[] args) {
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			// méthode héritée de java.io.Writer 
			fileWriter.write("JournalDev");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

append(char c)

Cette méthode ajoute le caractère spécifié à ce writer où c est le caractère de 16 bits à ajouter.

package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file using FileWriter append(char c) method
 * 
 * @author pankaj
 *
 */
public class FileWriterAppendCharacter {

	public static void main(String[] args) {
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			// méthode héritée de java.io.Writer 
			fileWriter.write("JournalDev");
			fileWriter.append('C');
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

flush()

Cette méthode vide le flux. Lorsque la méthode flush() est appelée, elle écrit immédiatement les données dans le fichier de sortie.

package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file with FileWriter flush() method
 * 
 * @author pankaj
 *
 */
public class FileWriterFlushExample {

	public static void main(String[] args) {
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			// méthode héritée de java.io.Writer 
			fileWriter.write("JournalDev");
			// méthode héritée de java.io.OutputStreamWriter
			fileWriter.flush();
			
			fileWriter.write(" Tutorials");
			fileWriter.flush();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

close()

Cette méthode vide le flux avant de le fermer. Une fois que le flux a été fermé, l’invocation de la méthode write() ou flush() entraînera une IOException. Fermer un flux précédemment fermé n’a aucun effet.

package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file with FileWriter close() method
 * 
 * @author pankaj
 *
 */
public class FileWriterCloseExample {

	public static void main(String[] args) {
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			// méthode héritée de java.io.Writer 
			fileWriter.write("JournalDev");
			// méthode héritée de java.io.OutputStreamWriter
			fileWriter.close();;
			
			fileWriter.write(" Tutorials");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

Sortie:

java.io.IOException: Stream closed
	at sun.nio.cs.StreamEncoder.ensureOpen(Unknown Source)
	at sun.nio.cs.StreamEncoder.write(Unknown Source)
	at sun.nio.cs.StreamEncoder.write(Unknown Source)
	at java.io.OutputStreamWriter.write(Unknown Source)
	at java.io.Writer.write(Unknown Source)
	at com.journaldev.examples.FileWriterCloseExample.main(FileWriterCloseExample.java:20)

FileWriter vs FileOutputStream

  • FileWriter est conçu pour écrire des flux de caractères tandis que FileOutputStream est utilisé pour écrire des flux d’octets bruts.
  • FileWriter traite des caractères de 16 bits tandis que FileOutputStream traite des octets de 8 bits.
  • FileWriter peut gérer les chaînes Unicode tandis que FileOutputStream écrit des octets dans un fichier et n’accepte pas de caractères ou de chaînes, il doit donc être enveloppé par OutputStreamWriter pour accepter des chaînes.

Vérifiez également java write file pour en savoir plus sur la façon d’écrire un fichier en Java. C’est tout pour Java FileWriter, j’espère que rien d’important n’a été omis ici.

Vous pouvez télécharger tous les exemples de code depuis notre répertoire GitHub.

Référence : Documentation API

Source:
https://www.digitalocean.com/community/tutorials/java-filewriter-example