Java - ファイルにデータを追加する

Java –データをファイルに追加

1. 前書き

このクイックチュートリアルでは、Javaを使用してファイルのコンテンツにデータを追加する方法をいくつかの簡単な方法で説明します。

コアJavaのFileWriter.を使用してこれを行う方法から始めましょう

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’sコンストラクターはbooleanマーキングを受け入れることに注意してください。

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の使用

次に、JDK 7で導入されたjava.nio.fileの機能を使用してファイルにコンテンツを追加することもできます。

@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 IOFileUtilsの使用

最後に、Apache Commons IOFileUtilsを使用して既存のファイルにコンテンツを追加する方法を見てみましょう。

まず、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. 結論

この記事では、さまざまな方法でコンテンツを追加する方法を説明しました。

このチュートリアルの完全な実装はover on GitHubにあります。