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

Javaでディレクトリ内の全ファイルの内容を1つのファイルにマージする方法


ディレクトリ内に存在するすべてのファイルの内容を1つのファイルにマージ(結合)したい場合、Javaでは File クラスと BufferedReaderPrintWriter を組み合わせることで簡単に実現できます。以下にそのサンプルコードを示します。

サンプルコード

import java.io.*;
public class Demo{
   public static void main(String[] args) throws IOException{
      File my_dir = new File("対象ディレクトリのパス");
      PrintWriter my_writer = new PrintWriter("マージ結果を保存する.txt");
      String[] fileNames = my_dir.list();
      for (String fileName : fileNames){
         System.out.println("Content read from " + fileName);
         File my_file = new File(my_dir, fileName);
         BufferedReader my_reader = new BufferedReader(new FileReader(my_file));
         my_writer.println("The file contains " + fileName);
         String my_line = my_reader.readLine();
         while (my_line != null){
            my_writer.println(my_line);
            my_line = my_reader.readLine();
         }
         my_writer.flush();
      }
      System.out.println("All data from files have been read and " + my_dir.getName() + " merged");
   }
}

出力結果

すべてのファイルの内容が、単一のテキストファイルにマージされます。

コードの解説

Demo という名前のクラスの中に main メソッドが定義されています。まず、File 型のオブジェクトを新しく生成し、対象となるディレクトリのパスを引数として渡します。

次に PrintWriter のインスタンスを作成し、マージ結果を保存するテキストファイルを指定します。list() メソッドを呼び出すことで、ディレクトリ内に存在するすべてのファイル名が文字列配列として取得できます。

その後、拡張for文でファイル名を1つずつ取り出しながら処理を行い、各ファイルを BufferedReader 経由で読み込みます。読み込んだ行は println() メソッドによって出力先のファイルへ書き込まれ、1ファイル分の処理が完了するたびに flush() を呼び出すことで、バッファに残ったデータが確実にディスクへ書き込まれます。これにより、データの取りこぼしや残留を防ぐことができます。

注意点

元のコードでは、拡張for文のループ変数名と配列名が一致していない(file_namesfileNames)ため、コンパイルエラーが発生します。上記のサンプルコードでは変数名を統一して修正していますので、そのまま利用できます。

また、より安全でモダンな実装としては、try-with-resources 構文を使用して BufferedReaderPrintWriter を自動的にクローズする方法も推奨されます。これにより、例外発生時でもリソースリークを防ぐことができます。

  1. 【Java入門】ディレクトリ内のすべてのファイルを再帰的に削除するプログラムの書き方

    この記事では、Javaを使って指定したディレクトリ内のすべてのファイルを再帰的に削除する方法を解説します。サブディレクトリの中にあるファイルも含めて、ファイルだけを削除し、ディレクトリ構造自体は残すプログラムです。前提となるディレクトリ構成まず、Dドライブ直下に ExampleDirectory というフォルダがあり、その中に7つのファイルと2つのディレクトリが含まれているものと仮定します。SampleDirectory1:SampleFile1.txt と SampleFile2.txt の2つのファイルを含むSampleDirectory2:SampleFile2.txt と Sample

  2. Javaでディレクトリ内のすべてのファイルを再帰的に一覧表示する方法

    この記事では、Javaを使って指定したディレクトリ内のすべてのファイルを再帰的に一覧表示するプログラムを解説します。サブディレクトリの中にあるファイルまで含めて取得できるため、フォルダ全体の内容を把握したい場合に便利なテクニックです。 前提となるディレクトリ構成 Dドライブ直下に「ExampleDirectory」というフォルダがあり、その中に7つのファイルと2つのサブディレクトリが格納されていると仮定します。 各サブディレクトリの内容は以下の通りです。 SampleDirectory1:SampleFile1.txt と SampleFile2.txt の2つのファイルを含みます。 Sa