问题标签 [zipinputstream]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
173 浏览

android - 如何在 Android 上解压缩更大的 zip?

我在我的 Android Studio 项目中解压缩文件,如下所示

原始的 zip 文件大约是。30 MB 大,仅包含 *.txt 文件。其中两个文本文件大于 100 MB,因此我收到以下错误消息:

E/AndroidRuntime:致命异常:主进程:com.example.myapp,PID:15821 java.lang.OutOfMemoryError:无法分配 167083628 字节分配,其中 33542384 个空闲字节和 136MB 直到在 java.io.ByteArrayOutputStream.expand(ByteArrayOutputStream .java:91) 在 java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:201) 在 com.example.myapp.managers.UnzipManager.decompressZip(UnzipManager.java:104) 在 com.example.myapp.managers.UnzipManager。 (UnzipManager.java:43) 在 com.example.myapp.MyActivity.onCreate(MyActivity.java:103) 在 android.app.Activity.performCreate(Activity.java:6272) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation. java:1108) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2387) 在 android。app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494) 在 android.os.android.app.ActivityThread.access$900(ActivityThread.java:157) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1356) 在 android.os。 Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5551) 在 java.lang.reflect.Method.invoke (本机方法)在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)1356) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5551) 在 java.在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620) 的 lang.reflect.Method.invoke(Native Method) )1356) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5551) 在 java.在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620) 的 lang.reflect.Method.invoke(Native Method) )

如何解压缩这些文件?

0 投票
1 回答
450 浏览

java - java升级到1.8解压文件时出现问题

我正在使用核心java.util.zip课程。现在在使用以下代码解压缩客户端文件时:

我收到以下错误:

然而,相同的代码在 JDK 1.6 中运行良好。

我搜索了一整天,但找不到任何与 Java JDK 中的代码对应的任何更改。

请帮助我找到合适的原因或链接来支持我的发现。

0 投票
1 回答
536 浏览

java - 解密困难:错误是 BadPaddingException:给定最终块未正确填充

试图解密压缩文件。有些工作,有些则没有。那些不起作用的在尝试关闭 ZipInputStream 时会给出错误。

在用户计算机上创建文件时这工作正常,但我想避免这种安全风险。我以为我最终通过删除文件处理了所有风险,但目睹了文件未被删除的情况。因此,我想完全避免这种可能性。使用使用流来解密和解压缩以限制内存使用?让我的代码达到这一点。

我已经阅读了几个关于填充等的地方,但我承认我已经继承了这段代码并且我仍在学习曲线上。

我得到的错误在下面并被抛出在最后一行(try-with-resources 块的末尾。

我已经调试并浏览了代码。引发此错误的文件未加密并解压缩并正确读取。所有数据都被读出,“行”在各个方面都是完整的。它只是不会关闭 ZipInputStream。有任何想法吗?

0 投票
2 回答
1580 浏览

java - 替换 Zip 文件而不用 Java 解压缩

我有一个 zip 文件,我想用另一个文件替换其中的一个文件。因此,不需要删除 zip 条目,只需将 zip 条目的文件替换为另一个文件即可。

这是我尝试过的。

我有一个名为的文件 zip 条目:

我有一个文件在位置 d 驱动器的位置

我可以通过替换我要替换的文件将文件复制到不同的 zip 文件中。但这实际上是不需要的(创建不同的文件)。那么我应该怎么做才能用我的自定义文件替换文件。

我在 Stackoverflow 中搜索了不同的帖子,但找不到我需要的东西。我读到无法删除 zip 条目,但是替换它呢?请帮忙

0 投票
1 回答
263 浏览

android-studio - 如何从分成两个文件夹的 100k 音频文件集合中播放单个音频文件?

我已将两个媒体文件夹放入一个 zip 文件夹中,该 zip 文件夹中的媒体文件总数为 100k。我需要从 zip 文件夹的特定文件夹中播放单个文件。问题是,首先完整读取 Zip 文件夹的全部内容,然后访问必要的文件。因此,播放单个文件需要超过 55 秒。我需要一个解决方案来减少播放音频文件所消耗的时间。

下面是我的代码:

0 投票
0 回答
186 浏览

java - Java ZipFile api 无法提取大文件

我正在阅读一个大的 zip 文件(超过 2.5GB)。当我尝试解压缩 2.5GB 以上的文件时,我得到一个例外

当我使用 ZipInputStream 而不是 ZipFile 时,不会发生此错误。为什么 ZipFile api 中会出现这种行为。

0 投票
1 回答
454 浏览

java - Android ZipInputStream ZipEntry 不读取到文件末尾

我有一个包含 json 文件和一些 base64 解码图像的压缩文件,我使用以下代码从中读取数据:

// 这不是问题:问题是zis.read(buffer, 0, (int) size)没有从文件中读取所有数据,所以我得到一个JSONException

编辑:

问题不在于从流中读取数据,它读取所有数据,但我认为问题在于编码这是 JSONException:

2959607 是字符串的长度

0 投票
1 回答
342 浏览

java - InputStream.read(byte[]) 是如何工作的?

我正在尝试解压缩一个 zip 文件夹,但我无法理解它是如何ZipInputStream.read(byte[])工作的。这段代码工作得很好,但我不知道我的文件是否比我设置的操作缓冲区大。

我确实阅读了文档,但我发现它令人困惑,请帮助。

0 投票
1 回答
89 浏览

java - Java - 解析 ZipInputStream 时出现 OutOfMemoryError

我在读取从 Web 服务检索到的 zip 文件的内容时遇到问题。

zip 文件存储在一个字节数组bytes中,如下面的代码所示。

当我执行时,IOUtils.toString(zis)我得到一个OutOfMemoryError: Java heap space

我确信问题是由 zip 中包含的 json 文件的尺寸引起的,大于 150MB。我尝试过使用其他较小的文件,并且可以毫无问题地获取 json 内容。

有没有办法读取 zip 的内容而不将其存储在内存中?

编辑: 我知道我可以增加我的堆内存,但我正在寻找基于代码的解决方案,因为它可以在任何环境中工作。

0 投票
1 回答
3575 浏览

java - Java:Zipinputstream 到 Zipoutputstream 导致“未找到中央目录结尾签名”错误

我尝试将 Zip 从 a 复制Zipinputstream到 a Zipoutputstream

我将 Zip 存储byte[]在 Oracle 数据库中。我Zipinputstream用来解压缩 zip(稍后我想编辑 Zip),然后将其放入 aZipoutputstream中以获取新的byte[]并使用此数组稍后通过 a 下载文件ServletOutputStream。当我创建一个新文件时 - 没有Zipinputstream- 它可以工作。但是当我使用时,Zipinputstream我得到了错误。

这是我的代码: