これは、 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();
}
}
}
それはより良いようです:)