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.