在 zip 文件中解压所有 jar 和 war 文件

Unpack all jar and war files with in a zip file

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

  1. war 个文件
  2. jar 文件
  3. jar 文件中可能包含 jar 文件。

我需要解压缩包含上述文件类型的压缩文件。同时,它还应该解压所有 jar 或 war 个文件。

有没有什么方法可以使用 shell 脚本或 java 来做到这一点?否则任何一个命令都可以完成所有这些。

试试下面的方法:

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
    }
  }
}