Java のテキストファイルにテキストを追加する

Mohammad Irfan 2023年10月12日
  1. Java の FileOutputStream クラスを使用してテキストファイルにテキストを追加する
  2. Java の FileWriter クラスを使用してテキストファイルにテキストを追加する
  3. Java の BufferedWriter クラスを使用してテキストファイルにテキストを追加する
  4. Java の Files クラスを使用してテキストファイルにテキストを追加する
  5. Java のテキストファイルにテキストを追加する
Java のテキストファイルにテキストを追加する

このチュートリアルでは、Java の既存のテキストファイルにテキストを追加する方法を紹介します。また、ガイドとしていくつかのサンプルコードをリストしました。

読み取りと書き込みは、ファイルを操作するときに実行できる最も基本的な操作の 2つです。Java でファイルにデータを書き込んだり追加したりする方法はいくつかあります。この記事では、テキストファイルに追加する 4つの異なる方法について学習します。

Java の FileOutputStream クラスを使用してテキストファイルにテキストを追加する

FileOutputStream クラスは、バイナリデータをファイルに書き込むために使用されます。これは、intfloat などのプリミティブデータ型に最も適していますが、文字指向のデータの書き込みにも使用できます。

文字列は、書き込む前にまずバイトの配列に変換する必要があります。この目的のために getBytes() メソッドを使用できます。また、コンストラクターの 2 番目の引数として true を渡す必要があります。この 2 番目の引数はブール追加フラグ用であり、既存のファイルに追加しようとしていることを示すために行われます。

無視すると、FileOutputStream クラスがファイルの内容を上書きします。上記の場所にファイルがまだ存在しない場合は、新しいファイルが作成されます。

これは、The quick brown fox jumps over the lazy dog という文を既存のファイルに追加しようとする例です。\r\n は、新しい行の先頭にテキストを挿入するために使用されます。

import java.io.FileOutputStream;
public class Main {
  public static void main(String args[]) {
    try {
      String filePath = "C:\\Users\\Lenovo\\Desktop\\demo.txt";
      FileOutputStream f = new FileOutputStream(filePath, true);
      String lineToAppend = "\r\nThe quick brown fox jumps over the lazy dog";
      byte[] byteArr = lineToAppend.getBytes(); // converting string into byte array
      f.write(byteArr);
      f.close();
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

Java の FileWriter クラスを使用してテキストファイルにテキストを追加する

Java の FileWriter クラスは、文字ストリームをファイルに書き込むように設計されています。これを使用して、既存のファイルまたは新しいファイルに文字または文字列を追加できます。上記のパスにファイルが存在しない場合は、新しいファイルが作成され、この新しいファイルにデータが書き込まれます。

以前の FileOutputStream クラスとは異なり、書き込む前に文字列をバイトに変換する必要はありません。ただし、2 番目の引数として trueFileWriter コンストラクターに渡す必要もあります。これは、既存のファイルに追加しようとしていることを示します。

省略した場合、ファイルの既存のコンテンツが上書きされます。次のコードは、FileWriter を使用して既存のファイルに 1 行を追加する方法を示しています。

import java.io.FileWriter;
public class SimpleTesting {
  public static void main(String args[]) {
    try {
      String filePath = "C:\\Users\\Lenovo\\Desktop\\demo.txt";
      FileWriter fw = new FileWriter(filePath, true);
      String lineToAppend = "\r\nThe quick brown fox jumps over the lazy dog";
      fw.write(lineToAppend);
      fw.close();
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

Java の BufferedWriter クラスを使用してテキストファイルにテキストを追加する

FileWriter クラスは、BufferedWriter のような他のライターによってラップされることがよくあります。このプロセスは、BufferedWriterFileWriter よりもはるかに効率的であるために行われます。

複数の書き込み操作がある場合は、BufferedWriterFileWriter よりも優先されます。内部バッファメモリを使用して、ファイルに追加する必要のあるデータを保存します。このバッファがいっぱいになるか、追加するものがなくなると、BufferedWriter が実際のファイルに書き込みます。

頻繁に書き込むのではなく、バッファからファイルに大量のデータを書き込みます。彼はより少ないシステムコールにつながります。したがって、通常の FileWriter よりもはるかに効率的です。

ただし、書き込み操作が 1つしかない場合、BufferedWriter は書き込みプロセスに別のステップを追加します。したがって、FileWriter を使用する方がよいでしょう。

BufferedWriter を使用するには、最初に FileWriter オブジェクトが必要です。これを BufferedWriter のコンストラクターに渡します。追加フラグには必ず true を使用してください。

次のコードは、Java での BufferedWriter の動作を示しています。

import java.io.BufferedWriter;
import java.io.FileWriter;
public class Main {
  public static void main(String args[]) {
    try {
      String filePath = "C:\\Users\\Lenovo\\Desktop\\demo.txt";
      FileWriter fw = new FileWriter(filePath, true);
      BufferedWriter bw = new BufferedWriter(fw);
      String lineToAppend = "\r\nThe quick brown fox jumps over the lazy dog";
      bw.write(lineToAppend);
      bw.close();
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

Java の Files クラスを使用してテキストファイルにテキストを追加する

Files ユーティリティクラスは Java7 で追加され、ファイルにデータを書き込む別の方法を提供します。これを行うには、Files.write() メソッドを使用します。このメソッドにはファイルパスが必要であり、文字列のバイト配列を追加する必要もあります。

また、既存のファイルにテキストを追加するには、StandardOpenOption.APPEND を指定する必要があります。ファイルが指定されたパスに存在することを確認してください。それ以外の場合は、NoSuchFileException を返します。

同じファイルに複数回書き込む必要がある場合、この方法はお勧めできません。ファイルも数回開閉され、全体的なパフォーマンスが低下するためです。

以下のコードは、Java I/O で Files.write() メソッドがどのように機能するかを示しています。

import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
public class Main {
  public static void main(String args[]) {
    try {
      String file = "C:\\Users\\Lenovo\\Desktop\\demo.txt";
      String lineToAppend = "\r\nThe quick brown fox jumps over the lazy dog";
      byte[] byteArr = lineToAppend.getBytes();
      Files.write(Paths.get(file), byteArr, StandardOpenOption.APPEND);
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

Java のテキストファイルにテキストを追加する

Java には、ファイル処理のための複数のオプションが用意されています。FileOutputStreamFileWriterBufferedWriter、または Files ユーティリティクラスを使用して、ファイルにデータを追加できます。

FileOutputStream および Files ユーティリティクラスの場合、最初に文字列をバイト配列に変換してから、write() メソッドに渡す必要があります。

BufferedWriter は、同じファイルに少量のデータを複数回書き込む必要がある場合に適しています。一方、FileWriter および Files ユーティリティクラスは、多数の書き込みに対して複数のシステムコールを実行します。これにより、全体的なパフォーマンスが低下します。

関連記事 - Java File

関連記事 - Java IO