这是来自 zip4j 源
public ZipInputStream getInputStream() throws ZipException {
    if (fileHeader == null) {
        throw new ZipException("file header is null, cannot get inputstream");
    }
    RandomAccessFile raf = null;
    try {
        raf = createFileHandler(InternalZipConstants.READ_MODE);
        String errMsg = "local header and file header do not match";
        //checkSplitFile();
        if (!checkLocalHeader())
            throw new ZipException(errMsg);
        init(raf);
        ...
}
private RandomAccessFile createFileHandler(String mode) throws ZipException {
    if (this.zipModel == null || !Zip4jUtil.isStringNotNullAndNotEmpty(this.zipModel.getZipFile())) {
        throw new ZipException("input parameter is null in getFilePointer");
    }
    try {
        RandomAccessFile raf = null;
        if (zipModel.isSplitArchive()) {
            raf = checkSplitFile();
        } else {
            raf = new RandomAccessFile(new File(this.zipModel.getZipFile()), mode);
        }
        return raf;
    } catch (FileNotFoundException e) {
        throw new ZipException(e);
    } catch (Exception e) {
        throw new ZipException(e);
    }
}
我相信这raf = new RandomAccessFile(new File(this.zipModel.getZipFile()), mode);行意味着它确实在加密的 zip 文件路径的子目录下制作了一个解密文件。
我不知道你是否可以即时解压缩(可能不是)。如果您不希望人们查看解密文件,请考虑将 zip 文件存储在应用程序受保护的内部存储空间中,而不是存储在 sd 卡中。