1. введение
В этом кратком руководстве мы увидим, как мы используем Java для добавления данных к содержимому файла – несколькими простыми способами.
Давайте начнем с того, как мы можем это сделать, используя файловую машинку core Java .
2. Использование пишущей машинки
Вот простой тест – чтение существующего файла, добавление некоторого текста, а затем проверка правильности добавления:
@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 конструктор принимает логическую маркировку, если мы хотим добавить данные в существующий файл.
Если мы установим его на ложный, затем существующий контент будет заменен.
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. Использование Гуавы
Чтобы начать использовать гуаву, нам нужно добавить ее зависимость в ваш 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
Наконец, давайте посмотрим, как мы можем добавить содержимое в существующий файл с помощью Apache Commons IO FileUtils .
Во-первых, давайте добавим зависимость ввода-вывода Apache Commons в ваш pom.xml :
commons-io commons-io 2.8.0
Теперь давайте рассмотрим краткий пример, демонстрирующий добавление содержимого в существующий файл с помощью 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 .