001/* 002 * jPOS Project [http://jpos.org] 003 * Copyright (C) 2000-2026 jPOS Software SRL 004 * 005 * This program is free software: you can redistribute it and/or modify 006 * it under the terms of the GNU Affero General Public License as 007 * published by the Free Software Foundation, either version 3 of the 008 * License, or (at your option) any later version. 009 * 010 * This program is distributed in the hope that it will be useful, 011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 013 * GNU Affero General Public License for more details. 014 * 015 * You should have received a copy of the GNU Affero General Public License 016 * along with this program. If not, see <http://www.gnu.org/licenses/>. 017 */ 018 019package org.jpos.util; 020 021import java.io.File; 022import java.io.FileInputStream; 023import java.io.FileOutputStream; 024import java.io.IOException; 025import java.util.zip.ZipEntry; 026import java.util.zip.ZipOutputStream; 027 028/** 029 * Uses java.util.zip to compress an input file and store it to the given output. Only valid for single files, not directories. 030 */ 031public class ZipUtil { 032 033 public static void zipFile(File input, File output) throws IOException { 034 FileInputStream in = null; 035 ZipOutputStream out = null; 036 try { 037 in = new FileInputStream(input); 038 out = new ZipOutputStream(new FileOutputStream(output)); 039 out.putNextEntry(new ZipEntry(input.getName())); 040 byte[] buffer = new byte[4096]; 041 int bytesRead; 042 while ((bytesRead = in.read(buffer)) != -1) { 043 out.write(buffer, 0, bytesRead); 044 } 045 out.flush(); 046 out.closeEntry(); 047 out.finish(); 048 } finally{ 049 if (in != null) { 050 in.close(); 051 } 052 if (out != null) { 053 out.close(); 054 } 055 } 056 } 057}