Javaにはデータを圧縮しZIPファイルにすることが出来るライブラリZipOutputStreamがあります。
当ライブラリを使用して、データを読み込んで圧縮しZIPファイルを作成するサンプルコードを書いてみました。
/** データ読み込み.
* サンプルファイルを読み込んでデータを返却する
*/
private byte[] getFileData() {
// 入力ファイル
Path path = Paths.get("test.txt");
// 入力ファイルの中身
byte[] inputFileData = null;
try {
// 読み込み
inputFileData = Files.readAllBytes(path);
} catch (IOException e) {
System.out.println("読み込み失敗");
e.printStackTrace();
}
return inputFileData;
}
/**
* ZIP作成.
* 引数で渡されたデータをZIPにまとめる
*/
private boolean createZip(byte[] inputFileData) {
// 文字コード
Charset charset = Charset.forName("MS932");
// 出力ファイル
String outputZipName = "output.zip";
String outputFileName = "output.txt";
try {
// Stream作成
FileOutputStream fos = new FileOutputStream(outputZipName);
BufferedOutputStream bos = new BufferedOutputStream(fos);
ZipOutputStream zos = new ZipOutputStream(bos, charset);
// zipファイル内にファイル作成
zos.putNextEntry(new ZipEntry(outputFileName));
// データ書き込み
zos.write(inputFileData);
// Close
zos.closeEntry();
zos.close();
} catch (IOException e) {
e.printStackTrace();
}
return true;
}
サンプルコードをSpring Bootプロジェクトに組み込んで実行してみると、このようにプロジェクト親フォルダ直下にtest.zipが出力されます。

* 上記サンプルコード実行するにはプロジェクト親フォルダ直下にtest.txtが必要です。