【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. リーダーとライターの生成: BufferedReaderとBufferedWriterのインスタンスを作成し、バッファリングによって効率的な入出力を実現します。同時に、削除対象の文字列を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など、実行環境に応じた適切な改行コードが自動的に使用される点にも注目してください。
-
Javaでプロパティファイルからデータを読み取る方法を解説
JavaのPropertiesクラスは、Hashtableクラスのサブクラスであり、永続化可能なプロパティの集合(プロパティセット)を表します。Propertiesオブジェクトはストリームへ保存したり、ストリームから読み込んだりすることができます。また、プロパティリスト内の各キーとそれに対応する値は、どちらも文字列型として扱われます。Javaでは、Propertiesファイルを使うことでアプリケーションの設定情報を外部化し、キーと値(key-value)のペアとして管理できます。Propertiesクラスが提供するload()メソッドを使用すると、.propertiesファイルに記述されたキー
-
PDFファイルからページを削除する方法|Acrobatとブラウザで簡単にできる手順
PDF(Portable Document Format)は、文書を電子的に閲覧・共有するためのファイル形式です。Adobeによって初めて開発されたPDFには数多くのメリットがありますが、そのひとつが特定のページを簡単に削除できるという点です。 PDFから1ページ、あるいは複数のページを削除したいとお考えなら、この記事がきっと役立ちます。それでは早速、具体的な手順を見ていきましょう。 PDFファイルからページを削除する方法 ページを削除する理由は人それぞれです。空白ページが混ざっている、レイアウトが崩れて見栄えが悪い、不要な情報が含まれているなど、さまざまなケースが考えられます。嬉しいことに、