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.