每个函数后的Java流连接
当我们使用每个函数后的Java流连接,java,java-8,java-stream,Java,Java 8,Java Stream,当我们使用Stream.concat连接流时,是否可以在流通过时运行函数 e、 g 我正在使用files.lines从多个文件创建流。现在,每当文件被完全读取时,我都需要将其删除。您是否尝试使用Stream.onClose()。例如Stream.concat().onClose()您是否尝试使用Stream.onClose()。与Stream.concat().onClose()类似,通过Stream.concat组成的流的关闭处理程序在结果流关闭时执行。请注意,关闭处理程序通常要求使用流的代码
Stream.concat
连接流时,是否可以在流通过时运行函数
e、 g
我正在使用
files.lines
从多个文件创建流。现在,每当文件被完全读取时,我都需要将其删除。您是否尝试使用Stream.onClose()。例如Stream.concat().onClose()您是否尝试使用Stream.onClose()。与Stream.concat().onClose()类似,通过Stream.concat组成的流的关闭处理程序在结果流关闭时执行。请注意,关闭处理程序通常要求使用流的代码关闭流,例如
try(Stream<String> s=Stream.concat(Files.lines(path1), Files.lines(path2))) {
s.forEach(System.out::println);
}
为了证明差异
try(Stream<String> s=Stream.concat(
Stream.of("foo").onClose(()->System.out.println("foo closed")),
Stream.of("bar").onClose(()->System.out.println("bar closed")) )) {
s.forEach(System.out::println);
}
鉴于
Stream.of("foo", "bar")
.flatMap(x -> Stream.of(x).onClose(()->System.out.println(x+" closed")) )
.forEach(System.out::println);
将打印
foo
富关
酒吧
酒吧关门
通过stream.concat组成的流的关闭处理程序在结果流关闭时执行。请注意,关闭处理程序通常要求使用流的代码关闭流,例如
try(Stream<String> s=Stream.concat(Files.lines(path1), Files.lines(path2))) {
s.forEach(System.out::println);
}
为了证明差异
try(Stream<String> s=Stream.concat(
Stream.of("foo").onClose(()->System.out.println("foo closed")),
Stream.of("bar").onClose(()->System.out.println("bar closed")) )) {
s.forEach(System.out::println);
}
鉴于
Stream.of("foo", "bar")
.flatMap(x -> Stream.of(x).onClose(()->System.out.println(x+" closed")) )
.forEach(System.out::println);
将打印
foo
富关
酒吧
酒吧关门
在连接之前只在原始流上运行它?请给出一个例子,我不理解您的“每当流结束”让我解释一下我的用例“结束”是什么意思?更新了问题在连接之前只在原始流上运行它?请给出一个例子,我不理解您的“每当溪流过去“让我来解释一下我的用例‘克服’是什么意思?更新了问题runnable没有运行somehow@RishiSarafonClose在这里是另一回事,它不会工作。runnable没有运行somehow@RishiSaraf一旦关闭在这里是另一回事,它将不起作用。关于flatMap的建议太棒了+1关于flatMap的建议太棒了+1.