Java - Ajouter des données à un fichier

1. Introduction

Dans ce rapide tutoriel, nous verrons comment nous utilisons Java pour ajouter des données au contenu d'un fichier - de quelques manières simples.

Commençons par la façon dont nous pouvons faire cela en utilisant FileWriter de base de Java .

2. Utilisation de FileWriter

Voici un test simple - lire un fichier existant, ajouter du texte, puis s'assurer qu'il a été correctement ajouté:

@Test public void whenAppendToFileUsingFileWriter_thenCorrect() throws IOException { FileWriter fw = new FileWriter(fileName, true); BufferedWriter bw = new BufferedWriter(fw); bw.write("Spain"); bw.newLine(); bw.close(); assertThat(getStringFromInputStream( new FileInputStream(fileName))) .isEqualTo("UK\r\n" + "US\r\n" + "Germany\r\n" + "Spain\r\n"); }

Notez que le constructeur de FileWriter accepte un marquage booléen si nous voulons ajouter des données à un fichier existant.

Si nous le définissons sur false, le contenu existant sera remplacé.

3. Utilisation de FileOutputStream

Ensuite - voyons comment nous pouvons faire la même opération - en utilisant FileOutputStream :

@Test public void whenAppendToFileUsingFileOutputStream_thenCorrect() throws Exception { FileOutputStream fos = new FileOutputStream(fileName, true); fos.write("Spain\r\n".getBytes()); fos.close(); assertThat(StreamUtils.getStringFromInputStream( new FileInputStream(fileName))) .isEqualTo("UK\r\n" + "US\r\n" + "Germany\r\n" + "Spain\r\n"); }

De même, le constructeur FileOutputStream accepte un booléen qui doit être défini sur true pour indiquer que nous voulons ajouter des données à un fichier existant.

4. Utilisation de java.nio.file

Ensuite - nous pouvons également ajouter du contenu aux fichiers en utilisant la fonctionnalité de java.nio.file - qui a été introduite dans JDK 7:

@Test public void whenAppendToFileUsingFiles_thenCorrect() throws IOException { String contentToAppend = "Spain\r\n"; Files.write( Paths.get(fileName), contentToAppend.getBytes(), StandardOpenOption.APPEND); assertThat(StreamUtils.getStringFromInputStream( new FileInputStream(fileName))) .isEqualTo("UK\r\n" + "US\r\n" + "Germany\r\n" + "Spain\r\n"); }

5. Utilisation de la goyave

Pour commencer à utiliser Guava, nous devons ajouter sa dépendance à notre pom.xml :

 com.google.guava guava 23.0 

Voyons maintenant comment nous pouvons commencer à utiliser Guava pour ajouter du contenu à un fichier existant:

@Test public void whenAppendToFileUsingFileWriter_thenCorrect() throws IOException { File file = new File(fileName); CharSink chs = Files.asCharSink( file, Charsets.UTF_8, FileWriteMode.APPEND); chs.write("Spain\r\n"); assertThat(StreamUtils.getStringFromInputStream( new FileInputStream(fileName))) .isEqualTo("UK\r\n" + "US\r\n" + "Germany\r\n" + "Spain\r\n"); }

6. Utilisation d'Apache Commons IO FileUtils

Enfin, voyons comment ajouter du contenu à un fichier existant à l'aide d'Apache Commons IO FileUtils .

Tout d'abord, ajoutons la dépendance Apache Commons IO à notre pom.xml :

 commons-io commons-io 2.6 

Voyons maintenant un exemple rapide qui montre l'ajout de contenu à un fichier existant à l'aide de FileUtils :

@Test public void whenAppendToFileUsingFiles_thenCorrect() throws IOException { File file = new File(fileName); FileUtils.writeStringToFile( file, "Spain\r\n", StandardCharsets.UTF_8, true); assertThat(StreamUtils.getStringFromInputStream( new FileInputStream(fileName))) .isEqualTo("UK\r\n" + "US\r\n" + "Germany\r\n" + "Spain\r\n"); }

7. Conclusion

Dans cet article, nous avons vu comment nous pouvons ajouter du contenu de plusieurs manières.

L'implémentation complète de ce tutoriel est disponible à l'adresse over sur GitHub.