千家信息网

怎么进行压缩jar

发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,本篇文章为大家展示了怎么进行压缩jar,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。场景页面上传jar包后台解压jar包页面展示所有package选择一个pa
千家信息网最后更新 2025年01月31日怎么进行压缩jar

本篇文章为大家展示了怎么进行压缩jar,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

场景

  • 页面上传jar包

  • 后台解压jar包

  • 页面展示所有package

  • 选择一个package

  • 页面显示class和子package

    • 选择class,进入class解析页面

    • 选择package,显示class和子package

压缩成jar

package com.wuxiongwei.java.jar2;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.util.zip.CRC32;import java.util.zip.CheckedOutputStream;import java.util.zip.ZipEntry;import java.util.zip.ZipOutputStream;/** * 非常好的工具类 
* 压缩成jar. * @author * @version 1.0.0 */public class JarCompressor { private static Log log = LogFactory.getLog(JarCompressor.class); private static final int BUFFER = 8192; private File fileName; private String originalUrl; public JarCompressor(String pathName) { fileName = new File(pathName); } public void compress(String... pathName) { ZipOutputStream out = null; try { FileOutputStream fileOutputStream = new FileOutputStream(fileName); CheckedOutputStream cos = new CheckedOutputStream(fileOutputStream, new CRC32()); out = new ZipOutputStream(cos); String basedir = ""; for (int i = 0; i < pathName.length; i++) { compress(new File(pathName[i]), out, basedir); } out.close(); } catch (Exception e) { throw new RuntimeException(e); } } public void compress(String srcPathName) { File file = new File(srcPathName); if (!file.exists()) throw new RuntimeException(srcPathName + "不存在!"); try { FileOutputStream fileOutputStream = new FileOutputStream(fileName); CheckedOutputStream cos = new CheckedOutputStream(fileOutputStream, new CRC32()); ZipOutputStream out = new ZipOutputStream(cos); String basedir = ""; compress(file, out, basedir); out.close(); } catch (Exception e) { throw new RuntimeException(e); } } private void compress(File file, ZipOutputStream out, String basedir) { /* 判断是目录还是文件 */ if (file.isDirectory()) { this.compressDirectory(file, out, basedir); } else { this.compressFile(file, out, basedir); } } /** * 压缩目录 * @param dir * @param out * @param basedir */ private void compressDirectory(File dir, ZipOutputStream out, String basedir) { if (!dir.exists()) return; File[] files = dir.listFiles(); for (int i = 0; i < files.length; i++) { /* 递归 */ compress(files[i], out, basedir + dir.getName() + "/"); } } /** * 压缩文件 * @param file * @param out * @param basedir */ private void compressFile(File file, ZipOutputStream out, String basedir) { if (!file.exists()) { return; } try { BufferedInputStream bis = new BufferedInputStream( new FileInputStream(file)); String filePath = (basedir + file.getName()) .replaceAll(getOriginalUrl() + "/", ""); log.info("压缩文件:" + filePath); ZipEntry entry = new ZipEntry(filePath); out.putNextEntry(entry); int count; byte data[] = new byte[BUFFER]; while ((count = bis.read(data, 0, BUFFER)) != -1) { out.write(data, 0, count); } bis.close(); } catch (Exception e) { throw new RuntimeException(e); } } public static void main(String[] args) { JarCompressor zc = new JarCompressor("/Users/mac/Documents/other/bw2/test.jar"); zc.compress("/Users/mac/Documents/other/bw2/test/"); } public String getOriginalUrl() { return originalUrl; } public void setOriginalUrl(String originalUrl) { this.originalUrl = originalUrl; }}

上述内容就是怎么进行压缩jar,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

0