91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解壓jar

發布時間:2021-10-20 10:11:11 來源:億速云 閱讀:147 作者:柒染 欄目:大數據

這篇文章給大家介紹如何解壓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.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
import java.nio.channels.Channels;
import java.nio.channels.FileChannel;
import java.nio.channels.ReadableByteChannel;
import java.util.Enumeration;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
/**
 * 非常好的工具類 <br>
 * 解壓jar.
 * @author
 * @version 1.0.0
 */
public class JarDecompression {

    protected static Log log = LogFactory.getLog(JarDecompression.class);

    @SuppressWarnings("resource")
    public static void uncompress(File jarFile, File tarDir) throws IOException {
        JarFile jfInst = new JarFile(jarFile);
        Enumeration enumEntry = jfInst.entries();
        while (enumEntry.hasMoreElements()) {
            JarEntry jarEntry = (JarEntry) enumEntry.nextElement();
            File tarFile = new File(tarDir, jarEntry.getName());
            if(jarEntry.getName().contains("META-INF")){
                File miFile = new File(tarDir, "META-INF");
                if(!miFile.exists()){
                    miFile.mkdirs();
                }

            }
            makeFile(jarEntry, tarFile);
            if (jarEntry.isDirectory()) {
                continue;
            }
            FileChannel fileChannel = new FileOutputStream(tarFile).getChannel();
            InputStream ins = jfInst.getInputStream(jarEntry);
            transferStream(ins, fileChannel);
        }
    }

    /**
     * 流交換操作
     * @param ins 輸入流
     * @param channel 輸出流
     */
    private static void transferStream(InputStream ins, FileChannel channel) {
        ByteBuffer byteBuffer = ByteBuffer.allocate(1024 * 10);
        ReadableByteChannel rbcInst = Channels.newChannel(ins);
        try {
            while (-1 != (rbcInst.read(byteBuffer))) {
                byteBuffer.flip();
                channel.write(byteBuffer);
                byteBuffer.clear();
            }
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } finally {
            if (null != rbcInst) {
                try {
                    rbcInst.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (null != channel) {
                try {
                    channel.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    /**
     * 打印jar文件內容信息
     * @param file jar文件
     */
    public static void printJarEntry(File file) {
        JarFile jfInst = null;;
        try {
            jfInst = new JarFile(file);
        } catch (IOException e) {
            e.printStackTrace();
        }
        Enumeration enumEntry = jfInst.entries();
        while (enumEntry.hasMoreElements()) {
            log.info((enumEntry.nextElement()));
        }
    }

    /**
     * 創建文件
     * @param jarEntry jar實體
     * @param fileInst 文件實體
     * @throws IOException 拋出異常
     */
    public static void makeFile(JarEntry jarEntry, File fileInst) {
        if (!fileInst.exists()) {
            if (jarEntry.isDirectory()) {
                fileInst.mkdirs();
            } else {
                try {
                    fileInst.createNewFile();
                } catch (IOException e) {
                    log.error("創建文件失敗>>>".concat(fileInst.getPath()));
                }
            }
        }
    }

    public static void main(String[] args) {
        File jarFile = new File("/Users/mac/Documents/other/bw2/bopsdk-openapi-1.0.2-Release.jar");
        File targetDir = new File("/Users/mac/Documents/other/bw2/test/");
        try {
            JarDecompression.uncompress(jarFile, targetDir);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

關于如何解壓jar就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

jar
AI

吉林市| 临朐县| 会宁县| 玛纳斯县| 资兴市| 元阳县| 军事| 宝坻区| 涿州市| 延寿县| 玛多县| 田林县| 抚顺县| 丹巴县| 拉萨市| 闽清县| 枣强县| 长岛县| 吴堡县| 永定县| 来宾市| 罗城| 浦北县| 隆子县| 五原县| 和顺县| 松阳县| 滕州市| 肇庆市| 香港| 女性| 扬中市| 息烽县| 长阳| 石嘴山市| 定日县| 玛纳斯县| 邯郸市| 昌黎县| 通道| 石棉县|