Set<Long> ids = new HashSet<>();
for (String fileName : fileSystem.list("my-directory")) {
InputStream stream = fileSystem.openInputStream(fileName);
BufferedReader br = new BufferedReader(new InputStreamReader(stream));
String line;
while ((line = br.readLine()) != null) {
ids.add(Long.valueOf(line.trim()));
}
br.close();
}
Set<Long> ids = fileSystem.list("my-directory").stream()
.map(fileName -> fileSystem::openInputStream)
.map(is -> new BufferedReader(new InputStreamReader(is)))
.flatMap(BufferedReader::lines)
.map(String::trim)
.map(Long::valueOf)
.collect(Collectors.toSet());
Upd:示例中的文件系统是HDFS,files#lines
,不能使用类似的方法。
一旦流的所有元素都被消耗完,就可以挂钩到流中来“关闭”资源。因此,可以在读取所有行后通过以下修改关闭读取器:
.flatMap(reader -> reader.lines().onClose(() -> close(reader)))
其中close(autoclocable)
处理IOException。
作为概念证明,已经测试了以下代码和输出:
import java.util.stream.Stream;
class Test {
public static void main(String[] args) {
Stream.of(1, 2, 3).flatMap(i ->
Stream.of(i, i * 2).onClose(() ->
System.out.println("Closed!")
)
).forEach(System.out::println);
}
}
1
2
Closed!
2
4
Closed!
3
6
Closed!
我将OkHttp网络库用于我的Android项目。 它也给出了我应该如何做的例子(通过使用AutoCloseable接口和Try的语法): 还有: “这个类(ResponseBody)和Response都实现了Closeable。关闭一个Response只会关闭它的Response Body。” 然而: 如果我尝试运行这段代码,我得到: 不兼容的类型。 但第2部分: 如果我在OKHTTP的文档中查
我的Selenium Webdriver测试类似于: 点击按钮- 此时,如果输入有效,弹出窗口可能会自动关闭;如果表单出现错误,弹出窗口将保持打开状态。 我的问题是,如果窗口自动关闭,而这正是我关注的窗口句柄,那么到底会发生什么?有没有办法让我检测到窗户已经关上了? 谢啦
我正在开发一个GUI,它允许用户决定是继续执行脚本还是终止脚本,但如果用户在15分钟内没有响应,我希望关闭窗口并自动执行脚本的其余部分。我用过根。函数中的destroy(),但它仅在用户响应时执行。 我尝试过在试用的基础上使用倒计时功能,但它不起作用,因为没有用户响应控制就不会进入倒计时功能。我有什么办法能完成这项任务吗?
我知道Java中的安全模式是在finally块中按顺序关闭结果集、语句和连接。 若您关闭连接,然后尝试关闭语句(不引发异常)。但若您试图从语句中调用任何方法,则会引发异常。 我想知道关闭连接是否会自动关闭所有由该连接创建的语句对象? 更新:我正在使用DatabaseProductVersion:Oracle Database 11g Release 11.1.0.0.0驱动程序名称:Oracle
我今天在这里是因为我有一个问题,就像标题所说的,关于Angular中的类和接口。 在我看来,我理解这一点: 接口在Typescript中用于执行类型检查,它们一直在这里,直到发生转换并在生产中消失。此外,接口不能用于实例化。 来自ES6的类也用于类型检查,但它们会在转换后保留,并在生产中生成代码。此外,它们还用于实例化。 所以,基本上,若我们在生产中不需要它们,若我们只需要进行类型检查,那个么接口
场景是:您在窗口(a)中,单击按钮/链接启动打印过程,然后打开一个新窗口(B),其中包含要打印的内容,打印对话立即显示,如果您单击窗口(B)的取消按钮,那么您应该可以再次打印,但当您单击窗口(B)的打印按钮打印时,您可以打印,但窗口(a)的按钮不能再次继续打印。给我一些解决方案…!!!在chrome,Firefox和internet explorer上工作