当前位置: 首页 > 知识库问答 >
问题:

有没有办法在科特林轻松打开和关闭溪流?[副本]

洪英豪
2023-03-14

我必须在java做什么:

try(InputStream inputStream = new FileInputStream("/home/user/123.txt")) {

    byte[] bytes = new byte[inputStream.available()];
    inputStream.read(bytes);
    System.out.println(new String(bytes));


} catch (IOException e) {
    e.printStackTrace();
} 

但是kotlin不知道如何使用资源!所以我的代码是

try {
    val input = FileInputStream("/home/user/123.txt")
} finally {
    // but finally scope doesn't see the scope of try!
}

有没有一种简单的方法来关闭这条小溪?我并不仅仅谈论文件。有没有办法轻松关闭任何流?

共有2个答案

史烈
2023-03-14
 BufferedInputStream input = null;
        try {
            input = new BufferedInputStream(new FileInputStream("/home/user/123.txt"));
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (input != null) {
                input.close();
            }
        }

适用于任何输入流。这只是我使用的一个例子。

子车轶
2023-03-14

<代码>可关闭。使用是您需要的:

val result = FileInputStream("/home/user/123.txt").use { input ->
    //Transform input to X
}
 类似资料:
  • 无意中,我创建了一个不支持null的列,尽管我看到了一个错误,但我尝试了几次添加null;没用。 但是现在我的是我的主键,现在很奇怪。我是否必须创建一个新表,或者是否有办法将其恢复为1而不是20?

  • 我读过使用“!!”而不是“?。“在kotlin中不推荐。检查变量中的null时,2有什么区别?

  • 在Kotlin中,标题和正文都是可选的;如果类没有正文,则可以省略大括号。 所以我们可以像这样定义类, 这种类型的课有什么用?

  • 我希望从C中的浮点数组中计算中值: FloatArray包含一个常规的C浮点数组。 我正在使用,但想知道是否有像这样的工具可以处理数据?现在,我正在制作一个副本,然后在扔掉副本之前执行。如果数据没有像这样的东西,是否有更有效的方法使用复制步骤来计算信息,从而避免潜在的额外O(n)循环?也许性能影响可以忽略不计?我的数组大小可能在20亿量级。

  • 我想知道是否有任何方法可以从Windows Docker映像启动容器。 这个想法是在我的Ubuntu上启动一个Windows容器,然后通过RDP连接到那个Windows机器。有可能?

  • 在下面的代码中。我在Intellij idea编译器中发现val a和val b默认为"val a: StringBuilder" 这两者的区别是什么?和