gpt4 book ai didi

java - 如何防止 try-with-resources 从 lines() (Stream) 关闭 BufferedReader?

转载 作者:行者123 更新时间:2023-11-29 05:33:26 29 4
gpt4 key购买 nike

这就是我正在做的,以防止 BufferedReader从关闭时 lines()完成 try-with-resources :

这是一个通用的实用程序,它可以在很多阅读器上运行,而不仅仅是文件..

public static List<String> getLines(Reader reader, boolean trim, boolean closeReader) throws IOException {
Objects.requireNonNull(reader);
BufferedReader br = new BufferedReader(reader) {

@Override
public void close() throws IOException {
if (closeReader) {
super.close();
}
}

};

try (Stream<String> lines = br.lines()) {
return lines.map(it -> trim ? it.trim() : it)
.collect(Collectors.toList());
}
}

有没有更好的控制方式来关闭Stream<String>也不会关闭 Bufferedreader

根据下面的评论尝试正常 try ,它看起来像这样:

public static List<String> getLines(Reader reader, boolean trim, boolean closeReader) throws IOException {
Objects.requireNonNull(reader);
BufferedReader br = new BufferedReader(reader);

try {
return br.lines()
.map(it -> trim ? it.trim() : it)
.collect(Collectors.toList());
} finally {
if (closeReader) {
br.close();
}
}
}

这似乎更好:)

最佳答案

我不认为你描述的是可能的。您的 try-with-resources 只是关闭了不是 brlines 本身正在关闭 br;如果不关闭 br,就无法关闭 lines

此外,我不明白您为什么想要避免关闭br。您正在一直阅读到阅读器的末尾(通过执行 collect);在那之后保持打开状态有什么意义?

关于java - 如何防止 try-with-resources 从 lines() (Stream<String>) 关闭 BufferedReader?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20319006/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com