枚举 ZipFile.entries 中的下一个元素时获取“致命信号 7 (SIGBUS),代码 2 (BUS_ADRERR)”

问题描述 投票:0回答:1

我正在尝试打开 ZipFile 以迭代其条目、修改条目并将内容写入 ZipOutputStream。

下面是执行此操作的代码(简化为仅显示有问题的部分)

        val filePath = fileAsset.file.absolutePath
        val zipFile = withContext(Dispatchers.IO) {
            ZipFile(filePath)
        }
        val zos = ZipOutputStream(withContext(Dispatchers.IO) {
            FileOutputStream(filePath)
        });
        val e = zipFile.entries()
        while (e.hasMoreElements()){
            val entryIn = e.nextElement();
        }

但这给了我以下错误

Fatal signal 7 (SIGBUS), code 2 (BUS_ADRERR), fault addr 0x75087e3fe43f in tid 10770 (DefaultDispatch), pid 10144 (ple.ebookreader) 
,应用程序崩溃了。

还有:

Zip 文件可以作为普通

File
对象读取。构建时出现问题
ZipFile

当我打电话给

e.nextElement()
之前,一切都很好。

到目前为止,我已经尝试使用

zipFile.stream
,将
entries
转换为
List
,但我找不到问题。

您能告诉我为什么会出现此错误以及如何修复它吗?

kotlin android-studio crash zip
1个回答
0
投票

我明白了,

问题是我正在使用相同的路径创建

ZipFile
ZipOutputStream

我用字节数组创建了

ZipOutputStream
,崩溃已经停止发生。

            val bytesStream = ByteArrayOutputStream()
            val zos = ZipOutputStream(bytesStream);
© www.soinside.com 2019 - 2024. All rights reserved.