java-Kotlin中的错误“必须不为null”
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-Kotlin中的错误“必须不为null”,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1111字,纯文字阅读大概需要2分钟。
内容图文
![java-Kotlin中的错误“必须不为null”](/upload/InfoBanner/zyjiaocheng/694/655f531fd796449987dfd48063bd4a23.jpg)
我正在尝试获取一个.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”所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。