Java
 Computer >> コンピューター >  >> プログラミング >> Java

【Java】ファイルから特定のテキスト(文字列)を削除する方法


Javaでファイルから特定のテキストを削除したい場合、「別の一時ファイルへ必要な行だけを書き出し、最後に元のファイル名に置き換える」という手法が定番です。以下のコード例を見てみましょう。

コード例

File input_file = new File("path to the .txt file");
File temp_file = new File("path to the .txt file");
BufferedReader my_reader = new BufferedReader(new FileReader(input_file));
BufferedWriter my_writer = new BufferedWriter(new FileWriter(temp_file));
String lineToRemove = "string to remove";
String current_line;
while((current_line = my_reader.readLine()) != null) {
    String trimmedLine = current_line.trim();
    if(trimmedLine.equals(lineToRemove)) continue;
    my_writer.write(current_line + System.getProperty("line.separator"));
}
my_writer.close();
my_reader.close();
boolean is_success = temp_file.renameTo(input_file);

出力

入力ファイル内の指定した文字列が削除されます。

コードの解説

このプログラムの処理の流れは以下の通りです。

1. ファイルオブジェクトの準備: まず、読み込み元となる入力ファイルと、書き込み先となる一時ファイルの2つのFileオブジェクトを定義します。

2. リーダーとライターの生成: BufferedReaderBufferedWriterのインスタンスを作成し、バッファリングによって効率的な入出力を実現します。同時に、削除対象の文字列をlineToRemoveとして定義しておきます。

3. 行ごとの比較と除外: readLine()で入力ファイルを1行ずつ読み込みながらループ処理を行います。trim()メソッドで行頭・行末の余分な空白を取り除いてから比較するため、インデント付きの行でも正確に判定できます。削除対象の文字列と一致した行はcontinueによってスキップされ、一時ファイルには書き込まれません。

4. リソースの解放と置き換え: 読み書きが完了したら、ライターとリーダーをクローズしてリソースを解放します。最後にrenameTo()メソッドで一時ファイルの名前を入力ファイル名に変更すれば、特定のテキストが削除された状態で元のファイルが更新されます。

補足:try-with-resourcesでより安全に

Java 7以降では、try-with-resources構文を使用すると、例外が発生した場合でもリソースが自動的にクローズされるため、より安全なコードになります。

try (BufferedReader reader = new BufferedReader(new FileReader(input_file));
     BufferedWriter writer = new BufferedWriter(new FileWriter(temp_file))) {
    String lineToRemove = "string to remove";
    String currentLine;
    while ((currentLine = reader.readLine()) != null) {
        if (currentLine.trim().equals(lineToRemove)) continue;
        writer.write(currentLine + System.lineSeparator());
    }
}
temp_file.renameTo(input_file);

また、改行コードはSystem.getProperty("line.separator")またはSystem.lineSeparator()で取得しているため、Windows・Linux・macOSなど、実行環境に応じた適切な改行コードが自動的に使用される点にも注目してください。

  1. Javaでプロパティファイルからデータを読み取る方法を解説

    JavaのPropertiesクラスは、Hashtableクラスのサブクラスであり、永続化可能なプロパティの集合(プロパティセット)を表します。Propertiesオブジェクトはストリームへ保存したり、ストリームから読み込んだりすることができます。また、プロパティリスト内の各キーとそれに対応する値は、どちらも文字列型として扱われます。Javaでは、Propertiesファイルを使うことでアプリケーションの設定情報を外部化し、キーと値(key-value)のペアとして管理できます。Propertiesクラスが提供するload()メソッドを使用すると、.propertiesファイルに記述されたキー

  2. PDFファイルからページを削除する方法|Acrobatとブラウザで簡単にできる手順

    PDF(Portable Document Format)は、文書を電子的に閲覧・共有するためのファイル形式です。Adobeによって初めて開発されたPDFには数多くのメリットがありますが、そのひとつが特定のページを簡単に削除できるという点です。 PDFから1ページ、あるいは複数のページを削除したいとお考えなら、この記事がきっと役立ちます。それでは早速、具体的な手順を見ていきましょう。 PDFファイルからページを削除する方法 ページを削除する理由は人それぞれです。空白ページが混ざっている、レイアウトが崩れて見栄えが悪い、不要な情報が含まれているなど、さまざまなケースが考えられます。嬉しいことに、