You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Kotlin中ZipFile(File!)构造函数已弃用的lint警告

解决ZipFile构造器过时的问题

原来直接通过ZipFile(tempFile)实例化的方式已经被废弃,官方推荐使用Builder模式创建ZipFile实例,具体用法如下:

基础用法(直接替换原有代码)

把过时的构造器调用替换为Builder链式调用即可:

import org.apache.commons.compress.archivers.zip.ZipFile
// snip
val tempFile = File.createTempFile("test","file")
// 替换过时的构造器调用
val zipFile = ZipFile.Builder(tempFile).get()

带自定义配置的用法

如果需要调整ZipFile的行为(比如指定字符编码、允许符号链接等),可以在Builder上调用对应配置方法后再执行get():

import java.nio.charset.StandardCharsets
import org.apache.commons.compress.archivers.zip.ZipFile
// snip
val tempFile = File.createTempFile("test","file")
val zipFile = ZipFile.Builder(tempFile)
    .setCharset(StandardCharsets.UTF_8) // 指定zip条目名称的编码
    .setAllowUnsafePaths(true) // 根据需求选择是否允许不安全路径
    .get()

推荐:用use块自动管理资源

为避免忘记关闭ZipFile导致资源泄漏,建议结合Kotlin的use函数自动完成资源释放:

import org.apache.commons.compress.archivers.zip.ZipFile
// snip
File.createTempFile("test","file").use { tempFile ->
    ZipFile.Builder(tempFile).get().use { zipFile ->
        // 在这里处理zip文件逻辑,比如遍历条目、读取内容
        zipFile.entries.asSequence().forEach { entry ->
            println("条目名称:${entry.name}")
        }
    }
}

Builder模式的核心是通过分步配置参数来构建实例,相比原有的重载构造器,可读性和扩展性更强。

内容的提问来源于stack exchange,提问作者Cornelius Roemer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 19:12:02