?
package ejbModule.util; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.zip.Adler32; import java.util.zip.CheckedOutputStream; import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipOutputStream; /** * 文件压缩(支持中文文件名) * * @author gaoyusi * */ public class FileHelper { /** * 中文条件下文件(夹)压缩 * * @throws IOException */ public static void zipCompress(String src, String des) throws IOException { ZipOutputStream out = null; try { CheckedOutputStream cusm = new CheckedOutputStream( new FileOutputStream(des), new Adler32()); out = new ZipOutputStream(new BufferedOutputStream(cusm)); fileZip(new File(src), out, ""); } finally { if (out != null) { out.close(); } } } private static void fileZip(File file, ZipOutputStream out, String base) throws IOException { if (file.isFile()) { if (base.length() > 0) { out.putNextEntry(new ZipEntry(base)); } else { out.putNextEntry(new ZipEntry(file.getName())); } BufferedReader in = new BufferedReader(new InputStreamReader( new FileInputStream(file), "ISO8859_1")); int c; while ((c = in.read()) != -1) { out.write(c); } in.close(); } else if (file.isDirectory()) { File[] subFiles = file.listFiles(); out.putNextEntry(new ZipEntry(base + File.separator)); base = base.length() != 0 ? base + File.separator : ""; for (File subFile : subFiles) { fileZip(subFile, out, base + subFile.getName()); } } } public static void main(String[] args) throws IOException { FileHelper.zipCompress("d:\\test","d:\\test1.zip"); } }
?
注意引入Ant.jar.
?