gpt4 book ai didi

java - Kotlin 中的错误 "must not be null"

转载 作者:IT老高 更新时间:2023-10-28 13:33:22 26 4
gpt4 key购买 nike

.zip 文件中有多个文件,我正在尝试获取这些文件。尝试解压缩文件会提供 java.lang.IllegalStateException: zis.nextEntry must not be null。怎么做才是正确的?

@Throws(IOException::class)
fun unzip(zipFile: File, targetDirectory: File) {
val zis = ZipInputStream(
BufferedInputStream(FileInputStream(zipFile)))
try {
var ze: ZipEntry
var count: Int
val buffer = ByteArray(8192)
ze = zis.nextEntry
while (ze != null) {
val file = File(targetDirectory, ze.name)
val dir = if (ze.isDirectory) file else file.parentFile
if (!dir.isDirectory && !dir.mkdirs())
throw FileNotFoundException("Failed to ensure directory: " + dir.absolutePath)
if (ze.isDirectory)
continue
val fout = FileOutputStream(file)
try {
count = zis.read(buffer)
while (count != -1) {
fout.write(buffer, 0, count)
count = zis.read(buffer)
}
} finally {
fout.close()
zis.closeEntry()
ze = zis.nextEntry
}
}
} finally {
zis.closeEntry()
zis.close()
}
}

最佳答案

当您到达文件末尾时,您从流中读取的 ZipEntry 将为 null,因此您必须将存储它的变量设为可为空:

var ze: ZipEntry?

您可以将读取的值分配给不可为空的变量,因为它们具有平台类型 ZipEntry!,因为它是 Java API - 在这种情况下,您必须确定它是否可以为 null。见 docs有关平台类型的更多信息。

关于java - Kotlin 中的错误 "must not be null",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46661956/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com