- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 android 设备上,我需要提取一个文件(一个 xapk,据我所知这是一个普通的 zip 存档),我从内容 uri 中获得。我正在使用这行代码创建 ZipInputStream:
ZipInputStream zis = new ZipInputStream(getContentResolver().openInputStream(zipUri));
然后我尝试读取存档的第一个条目:
ZipEntry entry = zis.getNextEntry()
问题是我得到了这个异常:
java.util.zip.ZipException: only DEFLATED entries can have EXT descriptor
我 100% 确定存档中没有 0bytes 文件,并且我可以使用设备中的其他实用程序(RAR、解压缩等)提取相同的存档。
如果我使用带有硬编码路径的 ZipFile(因此不涉及内容 uri),我可以毫无问题地提取相同的存档,因此问题与带有 uri 的 ZipInputStream 有关。另一方面,我不能在这里使用 ZipFile,因为它不支持内容 uris。
最佳答案
不幸的是,目前唯一的答案是:
不要像 ZipInputStream
那样以流模式处理 ZIP 文件。似乎所有当前可用的 ZIP 处理组件,如来自 JRE 的 ZipInputStream
和来自 Apache commons-compress 的 ZipArchiveInputStream
无法处理此类 ZIP 文件。
apache commons-compress 帮助页面上对问题的描述非常好:
ZIP archives know a feature called the data descriptor which is a wayto store an entry's length after the entry's data. This can only workreliably if the size information can be taken from the centraldirectory or the data itself can signal it is complete, which is truefor data that is compressed using the DEFLATED compression algorithm.
ZipFile has access to the central directory and can extract entriesusing the data descriptor reliably. The same is true forZipArchiveInputStream as long as the entry is DEFLATED. For STOREDentries ZipArchiveInputStream can try to read ahead until it finds thenext entry, but this approach is not safe and has to be enabled by aconstructor argument explicitly.
https://commons.apache.org/proper/commons-compress/zip.html
避免此问题的唯一可能是使用 ZipFile
,但是 ZipFile
JRE 的实现需要真实文件,因此您可能必须将数据保存到临时文件。
或者如果您改用 ZipFile
来自 Apache commons-compress 并且您已经将 ZIP 文件完全保存在内存中,您可以避免使用 SeekableInMemoryByteChannel
将其保存到临时文件。
编辑:使用 Apache (Kotlin) 的内存 ZipFile 的解决方案:
ByteArrayOutputStream().use { byteArrayOutputStream ->
inputStream.copyTo(byteArrayOutputStream)
ZipFile(SeekableInMemoryByteChannel(byteArrayOutputStream.toByteArray())).use {
for (entry in it.entries) {
it.getInputStream(entry).copyTo(someOutputStream)
}
}
}
关于java - 安卓 ZipInputStream : only DEFLATED entries can have EXT descriptor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47208272/
图书馆 EXT-JS 、 EXT-CORE 、 EXT-GWT 之间有什么区别,因为我在 ext-js 上工作所以请用外行语言解释我:) 最佳答案 最初它只是 Ext JS。作为 3.x 的一部分,E
我在 Ext 窗口中有 Ext GridPanel。为了使 Ext Window Resizeable,我将它的属性设置为 true 并且它工作正常。 但是,还想让网格可以调整大小。因此,为此我也尝试
我想构建一个网络应用程序。每当我在 Linux 终端发出命令时 $ sencha app build 在构建应用程序时,我遇到了一些与依赖相关的问题。错误类似于 Failed to resolv
我正在开发一个由 domain.ext 提供的网络应用程序。此 Web 应用程序使用基于 cookie 的 session ,并为用户提供在子域上托管包含自定义 JavaScript 的网页的能力,例
我正在尝试设置 LAMP使用 docker 的 web 服务器,很高兴发现 php 上的好人已经放在一起了a docker container for php . 通过阅读文档,我发现了三个表面上可以
美好的一天,伙计们, 我知道这听起来像是一个愚蠢的问题。但是,我想知道是否有人可以向我解释之间的区别。外网和 EXT.JS .. 我一直试图理解它们,但结果为零。据我所知,EXT.NET集成了EXT.
与常规 Ext.ajax 调用相比,Ext.direct 的主要优点是什么?我什么时候应该考虑使用一种而不是另一种? 最佳答案 实际上,这取决于您的后端、您想要做什么以及适合您的情况。你提出的问题相当
Ext.extend 和 Ext.override 有什么区别?在java中,你扩展一个类并覆盖它的方法。但是看看语法,似乎在 extjs 中,你既可以扩展一个类,也可以覆盖一个类 最佳答案 Ext.
我是 Ext Js 新手。我有以下文件结构。 我正在测试以下代码 - First Ext Js Page
我正在使用修改后的kanderson-well beats委托版本来修改AVKit需要的请求。所有代码将在帖子的底部。修改请求、创建字幕播放列表并将它们添加到主播放列表中是很好的,因为它们在请求AVM
我无法使用 Ext.namespace() 访问对象。 返回错误类型错误:Company.Test 不是函数 一直在查看文档但仍然无法使用对象。 这是命名空间脚本 Ext.namespace('Com
首先,我的问题是我想知道 Ext.Define() 和 Ext.Create() 之间有什么不同, 我想知道如何以正确的方式使用它们。 我查看了我的代码和许多 Extjs4 MVC 教程, 我在 Ex
我们正在使用 ext.net 版本 5.2.0,据我了解,它包括 Ext JS 7.2.0.67。我正在使用看起来像这样的 slider 控件 ext.net 5.2 Slider: https://
我刚刚使用 Ext JS 和 Ext Gantt 技术在我们的 .NET (WebForms) 项目中完成了甘特图页面的开发。正如我在之前的 post 中所述,效果很好。 我现在的问题是,与 hte
在我的 ExtJS 4.0.7 应用程序中,我需要动态加载一些第 3 方 javascript,以呈现某些面板内容(一些精美的图表/可视化小部件)。 我遇到了一个古老的问题,即在我尝试使用它之前脚本没
使用 ext-all.js 和 ext-all-debug.js 有什么区别? 从 debug.js 更改为 ext-all.js 会提高性能吗? 我可以假设从调试切换到普通文件不会对应用程序产生任何
我是在服用疯狂的药丸,还是这两件事几乎相同? 最佳答案 在这一点上花了大量时间使用这两个框架后,我会说它们并不“非常相同”。虽然它们可能都使用相同的图形 Assets ,但它们实现的方式却大不相同,并
我正在使用 Ext.form.Panel ,其配置如下: defaultType : 'textfield', layout : 'auto', height : '60%', w
我想重写 this从 Ext3 到 Ext4 的教程。但是从我能够观察到的情况来看,createDelegate 函数已被删除(可能与许多其他事情一样)并且它不起作用。我试过调用 call/apply
目标: 仅在需要时加载 Ext 框架(JS 文件)。 问题: 在稍后的状态下加载 Ext.JS 时,Ext.onReady 不会触发。我试着解决 Ext.onReady,但我也没有开始工作。我很高兴有
我是一名优秀的程序员,十分优秀!