Java - Aggiungi dati a un file

1. Introduzione

In questo breve tutorial, vedremo come utilizziamo Java per aggiungere dati al contenuto di un file, in pochi semplici modi.

Cominciamo con come possiamo farlo utilizzando FileWriter di Java di base .

2. Utilizzo di FileWriter

Ecco un semplice test: leggere un file esistente, aggiungere del testo e quindi assicurarti che sia stato aggiunto correttamente:

@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"); }

Si noti che il costruttore di FileWriter accetta un contrassegno booleano se si desidera aggiungere dati a un file esistente.

Se lo impostiamo su false, il contenuto esistente verrà sostituito.

3. Utilizzo di FileOutputStream

Avanti - vediamo come possiamo fare la stessa operazione - usando 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"); }

Allo stesso modo, il costruttore FileOutputStream accetta un valore booleano che deve essere impostato su true per contrassegnare che si desidera aggiungere dati a un file esistente.

4. Utilizzo di java.nio.file

Successivamente, possiamo anche aggiungere contenuto ai file utilizzando la funzionalità in java.nio.file , che è stata introdotta in 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. Utilizzando Guava

Per iniziare a utilizzare Guava, dobbiamo aggiungere la sua dipendenza al nostro pom.xml :

 com.google.guava guava 23.0 

Ora, vediamo come possiamo iniziare a utilizzare Guava per aggiungere contenuto a un file esistente:

@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. Utilizzo di Apache Commons IO FileUtils

Infine, vediamo come aggiungere contenuto a un file esistente utilizzando Apache Commons IO FileUtils .

Innanzitutto, aggiungiamo la dipendenza IO di Apache Commons al nostro pom.xml :

 commons-io commons-io 2.6 

Ora, vediamo un rapido esempio che dimostra l'aggiunta di contenuto a un file esistente utilizzando 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. Conclusione

In questo articolo abbiamo visto come possiamo aggiungere contenuti in più modi.

L'implementazione completa di questo tutorial può essere trovata su GitHub.