这就是我正在做的事情,以防止 a在 a 中完成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
?
根据下面的评论尝试一个 normal 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();
}
}
}
这似乎更好:)