Java - Føj data til en fil

1. Introduktion

I denne hurtige vejledning ser vi, hvordan vi bruger Java til at føje data til filens indhold - på nogle få enkle måder.

Lad os starte med, hvordan vi kan gøre dette ved hjælp af Java-kerner FileWriter.

2. Brug FileWriter

Her er en simpel test - at læse en eksisterende fil, tilføje noget tekst og derefter sikre dig, at der blev tilføjet korrekt:

@Test offentlig ugyldig, nårAppendToFileUsingFileWriter_thenCorrect () kaster IOException {FileWriter fw = ny FileWriter (filnavn, sandt); BufferedWriter bw = ny BufferedWriter (fw); bw.write ("Spanien"); bw.newLine (); bw.close (); assertThat (getStringFromInputStream (ny FileInputStream (filnavn))) .isEqualTo ("UK \ r \ n" + "US \ r \ n" + "Tyskland \ r \ n" + "Spanien \ r \ n"); }

Noter det FileWriter's konstruktør accepterer en boolsk markering, hvis vi vil føje data til en eksisterende fil.

Hvis vi indstiller det til falsk, så erstattes det eksisterende indhold.

3. Brug FileOutputStream

Næste - lad os se, hvordan vi kan udføre den samme operation - ved hjælp af FileOutputStream:

@Test offentlig ugyldigt nårAppendToFileUsingFileOutputStream_thenCorrect () kaster undtagelse {FileOutputStream fos = ny FileOutputStream (filnavn, sandt); fos.write ("Spanien \ r \ n" .getBytes ()); fos.close (); assertThat (StreamUtils.getStringFromInputStream (ny FileInputStream (filnavn))) .isEqualTo ("UK \ r \ n" + "US \ r \ n" + "Tyskland \ r \ n" + "Spanien \ r \ n"); }

Tilsvarende er FileOutputStream konstruktør accepterer en boolsk, der skal indstilles til sand for at markere, at vi vil føje data til en eksisterende fil.

4. Brug java.nio.file

Dernæst - vi kan også tilføje indhold til filer ved hjælp af funktionalitet i java.nio.file - som blev introduceret i JDK 7:

@Test offentlig ugyldig nårAppendToFileUsingFiles_thenCorrect () kaster IOException {String contentToAppend = "Spanien \ r \ n"; Files.write (Paths.get (fileName), contentToAppend.getBytes (), StandardOpenOption.APPEND); assertThat (StreamUtils.getStringFromInputStream (ny FileInputStream (filnavn))) .isEqualTo ("UK \ r \ n" + "US \ r \ n" + "Tyskland \ r \ n" + "Spanien \ r \ n"); }

5. Brug af Guava

For at begynde at bruge Guava er vi nødt til at tilføje dens afhængighed til vores pom.xml:

 com.google.guava guava 23.0 

Lad os nu se, hvordan vi kan begynde at bruge Guava til at føje indhold til en eksisterende fil:

@Test offentlig ugyldigt, nårAppendToFileUsingFileWriter_thenCorrect () kaster IOException {File file = new File (fileName); CharSink chs = Files.asCharSink (fil, Charsets.UTF_8, FileWriteMode.APPEND); chs.write ("Spanien \ r \ n"); assertThat (StreamUtils.getStringFromInputStream (ny FileInputStream (filnavn))) .isEqualTo ("UK \ r \ n" + "US \ r \ n" + "Tyskland \ r \ n" + "Spanien \ r \ n"); }

6. Brug af Apache Commons IO FileUtils

Endelig - lad os se, hvordan vi kan tilføje indhold til en eksisterende fil ved hjælp af Apache Commons IO FileUtils.

Lad os først tilføje Apache Commons IO-afhængighed til vores pom.xml:

 commons-io commons-io 2.6 

Lad os nu se et hurtigt eksempel, der demonstrerer at tilføje indhold til en eksisterende fil ved hjælp af FileUtils:

@Test offentlig ugyldig, nårAppendToFileUsingFiles_thenCorrect () kaster IOException {File file = new File (fileName); FileUtils.writeStringToFile (fil, "Spanien \ r \ n", StandardCharsets.UTF_8, sand); assertThat (StreamUtils.getStringFromInputStream (ny FileInputStream (filnavn))) .isEqualTo ("UK \ r \ n" + "US \ r \ n" + "Tyskland \ r \ n" + "Spanien \ r \ n"); }

7. Konklusion

I denne artikel har vi set, hvordan vi kan tilføje indhold på flere måder.

Den fulde implementering af denne vejledning kan findes på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found