Java - Gegevens aan een bestand toevoegen

1. Inleiding

In deze korte tutorial zullen we zien hoe we Java gebruiken om gegevens aan de inhoud van een bestand toe te voegen - op een paar eenvoudige manieren.

Laten we beginnen met hoe we dit kunnen doen met behulp van core Java's FileWriter.

2. Met behulp van FileWriter

Hier is een eenvoudige test - een bestaand bestand lezen, wat tekst toevoegen en er vervolgens voor zorgen dat het correct is toegevoegd:

@Test openbare leegte whenAppendToFileUsingFileWriter_thenCorrect () gooit IOException {FileWriter fw = nieuwe FileWriter (bestandsnaam, waar); BufferedWriter bw = nieuwe BufferedWriter (fw); bw.write ("Spanje"); bw.newLine (); bw.close (); assertThat (getStringFromInputStream (nieuwe FileInputStream (bestandsnaam))) .isEqualTo ("UK \ r \ n" + "US \ r \ n" + "Duitsland \ r \ n" + "Spanje \ r \ n"); }

Let daar op FileWriter's constructor accepteert een boolean markering als we gegevens aan een bestaand bestand willen toevoegen.

Als we het instellen op vals, dan wordt de bestaande inhoud vervangen.

3. Met behulp van FileOutputStream

Vervolgens - laten we eens kijken hoe we dezelfde bewerking kunnen uitvoeren - gebruiken FileOutputStream:

@ Test openbare leegte whenAppendToFileUsingFileOutputStream_thenCorrect () gooit uitzondering {FileOutputStream fos = nieuwe FileOutputStream (bestandsnaam, waar); fos.write ("Spanje \ r \ n" .getBytes ()); fos.close (); assertThat (StreamUtils.getStringFromInputStream (nieuwe FileInputStream (bestandsnaam))) .isEqualTo ("UK \ r \ n" + "US \ r \ n" + "Duitsland \ r \ n" + "Spanje \ r \ n"); }

Evenzo is het FileOutputStream constructor accepteert een booleaanse waarde die moet worden ingesteld op true om aan te geven dat we gegevens aan een bestaand bestand willen toevoegen.

4. Met behulp van java.nio.file

Vervolgens kunnen we ook inhoud aan bestanden toevoegen met behulp van functionaliteit in java.nio.file - die werd geïntroduceerd in JDK 7:

@Test public void whenAppendToFileUsingFiles_thenCorrect () gooit IOException {String contentToAppend = "Spanje \ r \ n"; Files.write (Paths.get (bestandsnaam), contentToAppend.getBytes (), StandardOpenOption.APPEND); assertThat (StreamUtils.getStringFromInputStream (nieuwe FileInputStream (bestandsnaam))) .isEqualTo ("UK \ r \ n" + "US \ r \ n" + "Duitsland \ r \ n" + "Spanje \ r \ n"); }

5. Guava gebruiken

Om Guava te gaan gebruiken, moeten we zijn afhankelijkheid toevoegen aan onze pom.xml:

 com.google.guava guave 23.0 

Laten we nu eens kijken hoe we Guava kunnen gaan gebruiken om inhoud aan een bestaand bestand toe te voegen:

@Test openbare leegte whenAppendToFileUsingFileWriter_thenCorrect () gooit IOException {File file = new File (fileName); CharSink chs = Files.asCharSink (bestand, Charsets.UTF_8, FileWriteMode.APPEND); chs.write ("Spanje \ r \ n"); assertThat (StreamUtils.getStringFromInputStream (nieuwe FileInputStream (bestandsnaam))) .isEqualTo ("UK \ r \ n" + "US \ r \ n" + "Duitsland \ r \ n" + "Spanje \ r \ n"); }

6. Apache Commons IO gebruiken FileUtils

Tot slot - laten we eens kijken hoe we inhoud aan een bestaand bestand kunnen toevoegen met Apache Commons IO FileUtils.

Laten we eerst de Apache Commons IO-afhankelijkheid toevoegen aan onze pom.xml:

 commons-io commons-io 2.6 

Laten we nu een snel voorbeeld bekijken dat laat zien hoe u inhoud aan een bestaand bestand kunt toevoegen met FileUtils:

@Test public void whenAppendToFileUsingFiles_thenCorrect () gooit IOException {File file = new File (fileName); FileUtils.writeStringToFile (bestand, "Spanje \ r \ n", StandardCharsets.UTF_8, true); assertThat (StreamUtils.getStringFromInputStream (nieuwe FileInputStream (bestandsnaam))) .isEqualTo ("UK \ r \ n" + "US \ r \ n" + "Duitsland \ r \ n" + "Spanje \ r \ n"); }

7. Conclusie

In dit artikel hebben we gezien hoe we inhoud op verschillende manieren kunnen toevoegen.

De volledige implementatie van deze tutorial is te vinden op GitHub.