gpt4 book ai didi

java - 将用于将 Assets 文件复制到 Android 中的缓存文件夹的 Java 代码转换为 Kotlin 的最佳实践

转载 作者:行者123 更新时间:2023-11-29 08:36:17 24 4
gpt4 key购买 nike

我正在使用这段代码将 Android 中的 Assets 文件复制到缓存文件夹,重点是它是一个 Java 代码,我将它转换为 Kotlin,但它看起来更像 Java(ish)主要围绕 while 循环:

val file = File("${cacheDir.path}/$fileName")

val dir = file.parentFile
dir.mkdirs()

val inputStream = assets.open(fileName)

val bufferedOutputStream = BufferedOutputStream(FileOutputStream(file))

val buf = ByteArray(10240)
var num = inputStream.read(buf)
// Java version: while ((num = fi.read(buf)) > 0)
while (num > 0) {
bufferedOutputStream.write(buf, 0, num)
num = inputStream.read(buf)
}

bufferedOutputStream.close()
inputStream.close()

任何可以使它更像 Kotlin 的专家。

最佳答案

实际上在完整翻译后代码应该是这样的:

val file = File("${cacheDir.path}/$fileName")

val dir = file.parentFile
dir.mkdirs()

val inputStream = assets.open(fileName).use { input ->
val bufferedOutputStream = file.outputStream().buffered().use { output ->
input.copyTo(output, 10240)
}
}

这同时利用了 Closeable.use扩展功能,some其他 handy 扩展函数和 copyTo开发人员在上面提到的功能,以最大限度地简化代码。

PS:Closeable.use 应该是 Java 7 try-with-resource 构造的 kotlin 对应物,具有更好的简单性。

关于java - 将用于将 Assets 文件复制到 Android 中的缓存文件夹的 Java 代码转换为 Kotlin 的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43894100/

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