将受保护的存档解压缩到字节数组

Unzip protected archive to a byte array

我得到了一个受密码保护的 zip 存档,

而且我需要编写一段代码来将存档解密为 byte [] 而无需将中间结果保存到文件系统,

到目前为止我发现标准 java JDK 不允许执行这样的操作,

还有一个库 Zip4j,但它似乎不允许将文件直接解密到 byte[],而是将结果写入文件系统,

如果真的非常感谢任何帮助,

谢谢

你可以用 zip4j 做到这一点。这是文档中的示例:

import net.lingala.zip4j.io.inputstream.ZipInputStream;
import net.lingala.zip4j.model.LocalFileHeader;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class ZipInputStreamExample {

  public void extractWithZipInputStream(File zipFile, char[] password) throws IOException {
    LocalFileHeader localFileHeader;
    int readLen;
    byte[] readBuffer = new byte[4096];

    try (ZipInputStream zipInputStream = new ZipInputStream(fileInputStream, password)) {
      while ((localFileHeader = zipInputStream.getNextEntry()) != null) {
        try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
          while ((readLen = zipInputStream.read(readBuffer)) != -1) {
            outputStream.write(readBuffer, 0, readLen);
          }
        }
      }
    }
  }
}

然后您可以对每个条目执行 outputStream.toByteArray() 以获取 zip 中该条目的字节内容。