我希望您能读取文件内容并为其每一行生成一个流。因此,我需要实现以下签名的函数:
fun InputStream.linesToFlow(): Flow<String>
有没有办法实现这个功能?
fun InputStream.linesToFlow(): Flow<String>
有没有办法实现这个功能?
我也找到了以下解决方案:
fun InputStream.linesToFlow() = bufferedReader().lineSequence().asFlow().flowOn(Dispatchers.IO)
你可以做到这个
fun InputStream.linesToFlow(): Flow<String> = channelFlow<String> {
reader().forEachLine { line ->
offer(line)
}
}
File("text.txt").inputStream().use { it.linesToFlow { line -> println(line); delay(1000) } }
,(正确的解决方案应该每秒打印一行)。 - Roman Elizarov
.flowOn(Dispatchers.IO)
,以确保它不会意外地阻塞一些有用的线程。 - Roman Elizarov.flowOn(Dispatchers.IO)
,看看会有什么不同。 - Roman Elizarov