gpt4 book ai didi

java.util.zip.ZipException : invalid general purpose flag: 9

转载 作者:行者123 更新时间:2023-12-01 09:07:03 25 4
gpt4 key购买 nike

我在 Android 6.0 上遇到此错误

java.util.zip.ZipException:无效的通用位标志:9
java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:253)

这是我的代码:

ZipInputStream zin = new ZipInputStream(getAppContext().getContentResolver().openInputStream(uri));

这是什么意思?我做错了什么?

最佳答案

这是 ZIP 文件规范:https://users.cs.jmu.edu/buchhofp/forensics/formats/pkzip.html

Flags   General purpose bit flag:
Bit 00: encrypted file
Bit 01: compression option
Bit 02: compression option
Bit 03: data descriptor
Bit 04: enhanced deflation
Bit 05: compressed patched data
Bit 06: strong encryption
Bit 07-10: unused
Bit 11: language encoding
Bit 12: reserved
Bit 13: mask header values
Bit 14-15: reserved

因此,GPBF 值为 9,同时设置了“加密文件”和“数据描述符”位。

查看 Android 源代码: https://chromium.googlesource.com/android_tools/+/9e9b6169a098bc19986e44fbbf65e4c29031e4bd/sdk/sources/android-22/java/util/zip/ZipFile.java(较旧的版本,但我怀疑这没有改变)显示:

static final int GPBF_ENCRYPTED_FLAG = 1 << 0;

[...]

/**
* Supported General Purpose Bit Flags Mask.
* Bit mask of bits not supported.
* Note: The only bit that we will enforce at this time
* is the encrypted bit. Although other bits are not supported,
* we must not enforce them as this could break some legitimate
* use cases (See http://b/8617715).
*/
static final int GPBF_UNSUPPORTED_MASK = GPBF_ENCRYPTED_FLAG;

[...]

// At position 6 we find the General Purpose Bit Flag.
int gpbf = Short.reverseBytes(is.readShort()) & 0xffff;
if ((gpbf & ZipFile.GPBF_UNSUPPORTED_MASK) != 0) {
throw new ZipException("Invalid General Purpose Bit Flag: " + gpbf);
}

因此,您的 ZIP 文件声称已加密该文件(设置了 GPBF 的位 00),并且 ZipFile 实现不支持读取加密文件。

关于java.util.zip.ZipException : invalid general purpose flag: 9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41187062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com