使用zip文件解压缩所有jar和war文件

时间:2018-03-23 05:52:58

标签: java shell jar zip unzip

我有一个zip文件,其中包含

  1. 战争文件
  2. jar文件
  3. jar文件可能包含jar文件。
  4. 我需要解压缩包含上述文件类型的zip文件。同时,它也应解压所有jar或war文件。

    有没有办法使用shell脚本或java?否则任何一个命令来做所有这些。

1 个答案:

答案 0 :(得分:0)

尝试以下方法:

public void unzipFile(String zipFile) throws ZipException, IOException 
{
int BUFFER = 2048;
ZipFile zip = new ZipFile(new File(zipFile));
String pathToMainFile = zipFile.substring(0, zipFile.length() - 4);
new File(pathToMainFile).mkdir();
Enumeration zipEntries = zip.entries();
while (zipEntries.hasMoreElements())
{
    ZipEntry entry = (ZipEntry) zipFileEntries.nextElement();
    String current = entry.getName();
    File dest = new File(pathToMainFile, current);
    File outerParentSt = dest.getParentFile();
    outerParentSt.mkdirs();

    if (!entry.isDirectory())
    {
        BufferedInputStream is = new BufferedInputStream(zip.getInputStream(entry));
        int currentByte;
        byte data[] = new byte[BUFFER];
        // write the file
        FileOutputStream fos = new FileOutputStream(dest);
        BufferedOutputStream destbuff = new BufferedOutputStream(fos,
        BUFFER);

        // r w to EOF
        while ((currentByte = is.read(data, 0, BUFFER)) != -1) {
            destbuff.write(data, 0, currentByte);
        }
        dest.flush();
        dest.close();
        is.close();
        fos.close;
    }

    if (current.endsWith(".zip")) //or jar or war
    {
        unzipFile(dest.getAbsolutePath()); //recursively
    }
  }
}