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が必要です。