首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在添加文件或文件夹时,zib4j zipfile会抛出ZipException以获取小于最小值的zip文件

在添加文件或文件夹时,zib4j zipfile会抛出ZipException以获取小于最小值的zip文件
EN

Stack Overflow用户
提问于 2021-07-06 22:20:56
回答 1查看 146关注 0票数 0

我尝试将文件夹添加到压缩文件中,但总是收到压缩文件小于预期大小的ZipException

代码语言:javascript
运行
复制
val file = File.createTempFile("export_", ".zip")
val zipfile = ZipFile(file)

val tmpFolder = context.cacheDir.absolutePath + "/test"
File(tmpFolder).mkdir()
File(tmpFolder + "/test1.txt").createNewFile()
File(tmpFolder + "/test2.txt").createNewFile()

zipfile.addFolder(File(tmpFolder))

在最后一行中,将引发ZipException

代码语言:javascript
运行
复制
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: xxxx, PID: 20023
    java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:612)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130) 
     Caused by: net.lingala.zip4j.exception.ZipException: Zip file size less than minimum expected zip file size. Probably not a zip file or a corrupted zip file
        at net.lingala.zip4j.headers.HeaderReader.readAllHeaders(HeaderReader.java:69)
        at net.lingala.zip4j.ZipFile.readZipInfo(ZipFile.java:1142)
        at net.lingala.zip4j.ZipFile.addFolder(ZipFile.java:378)
        at net.lingala.zip4j.ZipFile.addFolder(ZipFile.java:365)
        at net.lingala.zip4j.ZipFile.addFolder(ZipFile.java:331)
        at android.view.View.performClick(View.java:8160)
        at android.widget.TextView.performClick(TextView.java:16222)
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119)
        at android.view.View.performClickInternal(View.java:8137)
        at android.view.View.access$3700(View.java:888)
        at android.view.View$PerformClick.run(View.java:30236)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:246)

文件和文件夹都存在,为什么会有例外?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-07 16:07:26

File.createTempFile("export_", ".zip")在磁盘上创建一个文件,而File("somefile.zip")只指向一个文件,而不创建它。zip4j似乎会检查该文件是否存在,如果存在,它会期望该文件是有效的压缩文件。这就是为什么如果file是用createTempFile()创建的,那么使用ZipFile(file)就会失败。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68272298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档