【问题标题】:ZipInputStream(BufferedInputStream, Charset) is undefinedZipInputStream(BufferedInputStream, Charset) 未定义
【发布时间】:2014-07-02 07:21:33
【问题描述】:

我做了this 的问题,我看到存在一个名为 ZipInputStream 的构造函数:

ZipInputStream(BufferedInputStream, Charset)

但调试器向我抛出错误:

ZipInputStream(BufferedInputStream, Charset) is undefined

给我建议:

remove the argument to match ZipInputStream(InputStream)

我已经安装了最新的JDK 和 JRE 7,但我仍然遇到同样的错误。

我终于在这里解决了问题:

Extracting file with ZipInputStream error UTFDataFormatException

【问题讨论】:

  • 看起来你已经导入了不同的类。确保你已经导入了java.nio.charset.Charset

标签: java android zipinputstream


【解决方案1】:

如果您编写一个 android 应用程序,那么您正在使用 android 库。 android ZipInputStream 没有带有签名 ZipInputStream(InputStream, Charset) 的公共构造函数。您在 PC 上安装什么 JDK 或 JRE 并不重要,因为您的应用程序不会在 PC 上运行(或在 PC 上但在模拟器中)。

【讨论】:

  • 还有其他选择吗?我的 zip 中有包含特殊字符的文件。
  • @ƒernandoValle:我对 java / android 和字符集没有太多经验,但看起来 InputStreamReader 使用 ZipInputStream 作为构造函数参数可以解决问题。
  • @fabian - 我对此表示怀疑。 Charset 指定 ZipEntry 名称的编码,而不是文件本身。
  • 我终于在这里解决了使用外部库stackoverflow.com/questions/24509264/…
【解决方案2】:

显然,Android API 中没有其他选择。但是,如果您可以安排 ZIP 文件设置了“语言编码标志 (EFS)”位,那么最新版本的 android 应该尊重它,并将条目名称线程化为 UTF-8 编码。

请注意,第二个 ZipInputStream 构造函数已添加到 Java 7 中的(实际)Java 类库中,并且 Android API 基于 Java 6。

参考:

【讨论】:

  • 如何使用 7zip 或其他压缩器将 EFS 标志设置为 zip 文件?我已经搜索了它,但我没有找到很多。
  • 谢谢我终于在这里解决了我的问题stackoverflow.com/questions/24509264/…
猜你喜欢
  • 2023-01-29
  • 2012-07-01
  • 1970-01-01
  • 2012-12-15
  • 2015-06-13
  • 2015-06-11
  • 2013-06-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多