将 InputStream 转换为流

Convert InputStream to Flow

我想读取一个文件内容并针对其内容的每一行发出一个流。所以,我必须实现一个具有以下签名的函数:

fun InputStream.linesToFlow(): Flow<String>

有没有办法实现这个功能?

你可以做到

fun InputStream.linesToFlow(): Flow<String> = channelFlow<String> {
    reader().forEachLine { line -> 
        offer(line)
    }
}

我也找到了以下解决方案:

fun InputStream.linesToFlow() = bufferedReader().lineSequence().asFlow().flowOn(Dispatchers.IO)