目前我有以下代码:
private Flux<String> tailFileManual(Path path) {
final File file = path.toFile();
return Flux.using(
() -> new BufferedReader(new FileReader(file)),
reader -> Flux.create(emitter -> {
while (true) {
final String line = reader.readLine();
if (line == null) {
Thread.sleep(250);
} else if (line.equals("null")) {
emitter.complete();
break;
} else {
emitter.next(line);
}
}
}),
BufferedReader::close
);
}
运行最新的reactor-core(3.1.7),java抱怨我必须用try-catch包装每个抛出的类型(在本例中为IOException
)。现在这个代码在rx-java2
中使用Flowable.using
运行,但由于某种原因Reactor
迫使我手动包装try-catch中的每个可能的抛出错误,使得此代码详细 ......有什么我想念的吗?
我不想用try-catch包装FileReader
,Thread.sleep
和BufferedReader::close
,因此忽略了短lambda表达式的全部要点