はじめに
日々の業務で「同じフォルダ内のファイルを一括変換・編集・集計したい」というケースは多くあります。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回の実行で完了させられるので、定型作業の自動化に非常に役立ちます。
業務効率を上げたい方は、ぜひ一度ご自身の用途に合わせて応用してみてください。