Javaで複数ファイルを一括処理する方法【業務自動化に最適】

はじめに

日々の業務で「同じフォルダ内のファイルを一括変換・編集・集計したい」というケースは多くあります。Javaを使えば、こうした一括処理を自動化し、業務の効率化を図ることが可能です。

本記事では、Javaで複数ファイルを一括処理する方法について、以下のポイントを中心に解説します。

  • 特定フォルダの全ファイルにアクセスする方法
  • 各ファイルに対して処理を実行する方法
  • 拡張子ごとのフィルタリングや条件分岐
  • 実用的なコード例(テキスト編集、CSV加工、画像変換など)

対象読者と前提環境

  • Java中級者向け(基本文法が分かる方向け)
  • Java 11以上推奨(旧バージョンでも応用可)
  • OSはWindows/Linux両対応

フォルダ内の全ファイルを取得する

Javaでディレクトリ内のファイルを再帰的に取得するには、Files.walkが便利です。

import java.io.IOException;
import java.nio.file.*;

public class FileLister {
  public static void main(String[] args) throws IOException {
    Path dir = Paths.get("C:/data/input");
    Files.walk(dir)
         .filter(Files::isRegularFile)
         .forEach(System.out::println);
  }
}

特定の拡張子(例:.txt)のみを処理対象にする

Files.walk(dir)
     .filter(p -> p.toString().endsWith(".txt"))
     .forEach(p -> {
       // ファイル処理を書く
     });

テキストファイルを読み込んで1行ずつ出力

import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;

List<String> lines = Files.readAllLines(Paths.get("C:/data/input/sample.txt"));
for (String line : lines) {
  System.out.println(line);
}

フォルダ内のCSVを一括で読み取り、加工して保存

import java.io.*;
import java.nio.file.*;

public class CsvBatchProcessor {
  public static void main(String[] args) throws IOException {
    Path inputDir = Paths.get("C:/data/csv");
    Path outputDir = Paths.get("C:/data/processed");

    Files.createDirectories(outputDir);

    Files.walk(inputDir)
         .filter(p -> p.toString().endsWith(".csv"))
         .forEach(p -> {
           try {
             Path outPath = outputDir.resolve(p.getFileName());
             List<String> lines = Files.readAllLines(p);
             List<String> modified = lines.stream()
                                          .map(line -> line.replace("旧文字", "新文字"))
                                          .toList();
             Files.write(outPath, modified);
             System.out.println("変換済み: " + p.getFileName());
           } catch (IOException e) {
             e.printStackTrace();
           }
         });
  }
}

画像ファイル(JPG)の一括リサイズ

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.awt.Graphics2D;
import java.awt.Image;
import java.io.File;

public class ImageResizer {
  public static void resize(File input, File output, int width, int height) throws Exception {
    BufferedImage original = ImageIO.read(input);
    Image resized = original.getScaledInstance(width, height, Image.SCALE_SMOOTH);
    BufferedImage outputImage = new BufferedImage(width, height, original.getType());
    Graphics2D g2d = outputImage.createGraphics();
    g2d.drawImage(resized, 0, 0, null);
    g2d.dispose();
    ImageIO.write(outputImage, "jpg", output);
  }
}

上記をフォルダ内の全画像に適用するコードと組み合わせると一括処理が可能です。


バッチ化して日次処理にする例(Windows用)

run.bat などで以下のように実行可能:

@echo off
java -cp target/my-batch.jar com.example.CsvBatchProcessor

まとめ

Javaを使えば、フォルダ内のファイルを効率的に一括処理できます。日常業務でよくある「CSV変換」「画像圧縮」「ログ編集」なども、1回の実行で完了させられるので、定型作業の自動化に非常に役立ちます。

業務効率を上げたい方は、ぜひ一度ご自身の用途に合わせて応用してみてください。

タイトルとURLをコピーしました