从RxJava 1到RxJava 2

从RxJava 1到RxJava 2,java,rx-java,Java,Rx Java,我正在尝试将这个RxJava1代码转换为RxJava2 public static Observable<Path> listFolder(Path dir, String glob) { return Observable.<Path>create(subscriber -> { try { DirectoryStream<Path> stream = Files.

我正在尝试将这个RxJava1代码转换为RxJava2

public static Observable<Path> listFolder(Path dir, String glob) {
    return Observable.<Path>create(subscriber -> {
        try {
            DirectoryStream<Path> stream =
                    Files.newDirectoryStream(dir, glob);

            subscriber.add(Subscriptions.create(() -> {
                try {
                    stream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }));
            Observable.<Path>from(stream).subscribe(subscriber);
        } catch (DirectoryIteratorException ex) {
            subscriber.onError(ex);
        } catch (IOException ioe) {
            subscriber.onError(ioe);
        }
    });
}
公共静态可观察列表文件夹(路径目录,字符串全局){
返回可观察。创建(订户->{
试一试{
目录流=
newDirectoryStream(dir,glob);
subscriber.add(订阅.创建)(()->{
试一试{
stream.close();
}捕获(IOE异常){
e、 printStackTrace();
}
}));
可观察。来自(流)。订阅(订户);
}捕获(DirectoryIteratorException ex){
认购人。认购人(ex);
}捕获(ioe异常ioe){
认购人。一个错误(ioe);
}
});
}

问题是,在Rxjava2中,我没有让订阅者向它添加新的订阅

享受RxJava 2的简洁性(
Flowable
现在是背压支持类):

公共静态可流动列表文件夹(路径目录,字符串全局){
返回流。使用(
()->Files.newDirectoryStream(dir,glob),
流->可流动。可流动(流),
stream->stream.close());
}

如果您不需要背压,请将
可流动的
替换为
可观察的

这与使用create类似,还是考虑了背压和所有因素?谢谢您的提问,我已经修改了答案以支持背压。
public static Flowable<Path> listFolder(Path dir, String glob) {
    return Flowable.using(
        () -> Files.newDirectoryStream(dir, glob),
        stream -> Flowable.fromIterable(stream),
        stream -> stream.close());
}