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)

更新於:2021年11月23日

585 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.