有没有办法在 kotlin 轻松打开和关闭流? [复制]

Posted

技术标签:

【中文标题】有没有办法在 kotlin 轻松打开和关闭流? [复制]【英文标题】:Is there a way to open and close a stream easily at kotlin? [duplicate] 【发布时间】:2017-09-07 13:48:51 【问题描述】:

我在 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-with-resources!所以我的代码是

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

有没有简单的方法来关闭流?而且我不仅仅谈论文件。有没有办法轻松关闭任何stream

【问题讨论】:

【参考方案1】:

Closeable.use 就是你要找的东西:

val result = FileInputStream("/home/user/123.txt").use  input ->
    //Transform input to X

【讨论】:

它是否也刷新流? 当然不是。只需检查源代码。【参考方案2】:
 BufferedInputStream input = null;
        try 
            input = new BufferedInputStream(new FileInputStream("/home/user/123.txt"));
         catch (Exception e) 
            e.printStackTrace();
         finally 
            if (input != null) 
                input.close();
            
        

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

【讨论】:

这是java代码

以上是关于有没有办法在 kotlin 轻松打开和关闭流? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在不关闭底层流的情况下关闭 Writer?

一次关闭Java中的所有流

java中文件打开和关闭的问题

kotlin实现流读取

非英语键盘vim用户的轻松打字[关闭]

c#开启httpserver另一个程序在占用