RxJava using에서 FileInputStream 을 안정적으로 닫습니다.

3539 단어 KotlinRxJava
File InputStream을 사용한 일련의 처리가 끝나거나 이상이 발생하여 처리가 중단되었을 때 등 RxJava를 사용하면서 믿음직스럽게close를 진행하고자 할 때 using을 사용하면 기분이 좋습니다.
Observable.using(
    { FileInputStream(File("hoge.txt")) }, // 1. Observableを流すためのresourceを生成
    { fileInputStream -> Observable.just(fileInputStream).flatMap { /* fileInputStreamを使った何かしらの処理 */ } }, // 2. 1を引数にとり、Observableを返す関数。1を使った一連の処理はここに記述する。
    { fileInputStream -> fileInputStream.close() } // 3. 1を引数に取る関数。2の処理が終了したり、onErrorに流れた場合に実行される。
)
이걸로 대출 모델을 시도해 보세요.

fun <T> usingFileInputStream(file: File, mainStream: (FileInputStream) -> Observable<T>) = 
    Observable.using(
        { FileInputStream(file) },
        { mainStream(it) },
        { it.close }
    )

usingFileInputStream(File("hoge.txt")) { fileInputStream ->

   // fileInputStreamを使って何かする
   ...

}
.flatMap { ... }
.subscribe( ... )

좋은 웹페이지 즐겨찾기