これは、 a で終了したBufferedReader
ときに a が閉じられないようにするために私が行っていることです: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();
}
}
}
それはより良いようです:)