Java - Legg til data i en fil

1. Introduksjon

I denne raske opplæringen vil vi se hvordan vi bruker Java til å legge til data i innholdet i en fil - på noen få enkle måter.

La oss starte med hvordan vi kan gjøre dette ved hjelp av kjernen Java FileWriter.

2. Bruke FileWriter

Her er en enkel test - å lese en eksisterende fil, legge til litt tekst, og deretter sørge for at den ble lagt riktig til:

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

Noter det FileWriter's konstruktør aksepterer a boolsk merking hvis vi vil legge til data i en eksisterende fil.

Hvis vi setter det til falsk, da vil det eksisterende innholdet bli erstattet.

3. Bruke FileOutputStream

Neste - la oss se hvordan vi kan gjøre den samme operasjonen - ved hjelp av FileOutputStream:

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

Tilsvarende FileOutputStream constructor aksepterer en boolsk som skal settes til true for å markere at vi vil legge til data i en eksisterende fil.

4. Bruke java.nio.file

Neste - vi kan også legge til innhold i filer ved hjelp av funksjonalitet i java.nio.file - som ble introdusert i JDK 7:

@Test offentlig ugyldig når AppendToFileUsingFiles_thenCorrect () kaster IOException {String contentToAppend = "Spania \ 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" + "Spania \ r \ n"); }

5. Bruke Guava

For å begynne å bruke Guava, må vi legge til avhengighet til vårt pom.xml:

 com.google.guava guava 23.0 

La oss nå se hvordan vi kan begynne å bruke Guava til å legge til innhold i en eksisterende fil:

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

6. Bruke Apache Commons IO FileUtils

Til slutt - la oss se hvordan vi kan legge til innhold i en eksisterende fil ved hjelp av Apache Commons IO FileUtils.

La oss først legge til Apache Commons IO-avhengighet til vår pom.xml:

 commons-io commons-io 2.6 

La oss nå se et raskt eksempel som viser at du legger til innhold i en eksisterende fil FileUtils:

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

7. Konklusjon

I denne artikkelen har vi sett hvordan vi kan legge til innhold på flere måter.

Den fulle implementeringen av denne veiledningen finner du på GitHub.


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