in src/main/java/org/apache/datasketches/Files.java [273:310]
public static String readLine(final ByteBuffer mbBuf, final ByteArrayBuilder bab,
final Charset charset) {
if (!mbBuf.hasRemaining()) {
return null;
}
final ByteArrayBuilder bab1;
if (bab == null) {
bab1 = new ByteArrayBuilder();
} else {
bab1 = bab;
bab1.setLength(0);
}
while (mbBuf.hasRemaining()) {
final byte b = mbBuf.get();
if (b == LF) {
break; // EOL
}
if (b == CR) {
if (mbBuf.hasRemaining()) {
// peek next byte without moving position
if (mbBuf.get(mbBuf.position()) == LF) {
mbBuf.get(); // consume it
}
}
break; // EOL
}
bab1.append(b); // transfer the byte
}
if (bab1.length() == 0) {
if (!mbBuf.hasRemaining()) {
return null;
}
return "";
}
final byte[] out = bab1.toByteArray();
final String s = new String(out, charset);
return s;
}