Kotlin中的Try-with-resources
Kotlin 在内存管理方面非常高效。与 Java 不同,Kotlin 开发者无需显式管理内存。我们有不同类型的内存管理技术,而**Try-with-resource** 就是其中之一。在 Kotlin 中,我们有一个名为“**use**”的函数,它可以自动承担管理资源的负担。这是 Kotlin 提供的**标准库**函数的一部分。
根据 Kotlin 文档,**use()** 被定义为所有可关闭类型上的泛型扩展。其实现如下所示:
public inline fun <T : Closeable?, R>T.use(block: (T) -> R): R {}
在上图函数中,定义块是处理**可关闭**资源的函数。
**fun** 是函数调用,它返回**block** 函数的结果。
示例:use() 实现
在这个例子中,我们将看到如何使用 use() 函数来实现**try-with-resources**。我们将对**bufferedReader()** 使用**use()** 方法来读取“**myFile.txt**”的内容。
import java.io.File fun main(args: Array<String>) { val readMyFile = File("myFile.txt") readMyFile .bufferedReader().use{ println(it.readText()) } }
输出
执行上述代码段后,它应该读取文件对象中提供的所有文件内容。如果您在 Kotlin playground (https://play.kotlinlang.org/) 中运行它,它会抛出安全异常,因为您没有权限从 playground 服务器读取。
Exception in thread "main" java.io.FileNotFoundException: myFile.txt (No such file or directory) at java.io.FileInputStream.open0(Native Method) at java.io.FileInputStream.open(FileInputStream.java:195) at java.io.FileInputStream.<init>(FileInputStream.java:138) at MainKt.main(main.kt:4)
广告