java-Kotlin中的错误“必须不为null”

java-Kotlin中的错误“必须不为null”,第1张

概述我正在尝试获取一个.zip文件中的多个文件.尝试解压缩文件会提供java.lang.IllegalStateException:zis.nextEntry不能为null.如何正确地做呢?@Throws(IOException::class)fununzip(zipFile:File,targetDirectory:File){valzis=ZipInputStream(

我正在尝试获取一个.zip文件中的多个文件.尝试解压缩文件会提供java.lang.IllegalStateException:zis.nextEntry不能为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,因此必须使将其存储在null中的变量可为空:

var ze: ZipEntry?

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

总结

以上是内存溢出为你收集整理的java-Kotlin中的错误“必须不为null”全部内容,希望文章能够帮你解决java-Kotlin中的错误“必须不为null”所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1095092.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存