Java - Добавяне на данни към файл

1. Въведение

В този бърз урок ще видим как използваме Java за добавяне на данни към съдържанието на файл - по няколко прости начина.

Нека започнем с това как можем да направим това, използвайки основния FileWriter на Java .

2. Използване на FileWriter

Ето един прост тест - четене на съществуващ файл, добавяне на малко текст и след това се уверете, че е приложен правилно:

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

Имайте предвид, че конструкторът на FileWriter приема логическа маркировка, ако искаме да добавим данни към съществуващ файл.

Ако го зададем на false, тогава съществуващото съдържание ще бъде заменено.

3. Използване на FileOutputStream

След това - нека видим как можем да направим същата операция - използвайки 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"); }

По подобен начин конструкторът FileOutputStream приема булева стойност, която трябва да бъде зададена на true, за да отбележи, че искаме да добавим данни към съществуващ файл.

4. Използване на java.nio.file

След това - можем също да добавим съдържание към файлове, използвайки функционалност в java.nio.file - което беше въведено в 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. Използване на Гуава

За да започнем да използваме Guava, трябва да добавим зависимостта му към нашия pom.xml :

 com.google.guava guava 23.0 

Сега нека видим как можем да започнем да използваме Guava за добавяне на съдържание към съществуващ файл:

@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. Използване на Apache Commons IO FileUtils

И накрая - нека видим как можем да добавим съдържание към съществуващ файл с помощта на Apache Commons IO FileUtils .

Първо, нека добавим зависимостта на Apache Commons IO към нашия pom.xml :

 commons-io commons-io 2.6 

Сега, нека видим бърз пример, който демонстрира добавяне на съдържание към съществуващ файл с помощта на 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. Заключение

В тази статия видяхме как можем да добавяме съдържание по множество начини.

Пълното изпълнение на този урок може да бъде намерено в GitHub.