Pertanyaan Adakah cara membuka dan menutup aliran dengan mudah di kotlin? [duplikat]


Pertanyaan ini sudah memiliki jawaban di sini:

Apa yang harus saya lakukan di 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();
} 

Tapi kotlin tidak tahu tentang try-with-resources! Jadi kode saya

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

Apakah ada cara mudah untuk menutup aliran? Dan saya tidak hanya berbicara tentang file. Apakah ada cara untuk menutupnya stream dengan mudah?


4
2017-09-07 13:48


asal


Jawaban:


Closeable.use adalah apa yang Anda cari:

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

11
2017-09-07 13:52



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

Bekerja dengan baik dengan Inputstream manapun. Ini hanyalah sebuah contoh yang saya gunakan.


-1
2017-09-07 14:38