Рубрики
Без рубрики

Java – Добавление данных в файл

Краткое и практическое руководство по добавлению данных в файлы.

Автор оригинала: baeldung.

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 .