On Dec 21, 2017, at 10:23 AM, Peter Levart <peter.lev...@gmail.com> wrote:
>> Or I suppose a single List containing an object containing both the bytes >> and the length would work. One could for example us > > I don't think this would be necessary. All buffers but the last one are fully > filled. The inner reading loop guarantees that the buffer is either fully > read or the stream is at EOF. So in final gathering loop you could maintain a > 'remaining' value, initialized to 'total' and decremented by > DEFAULT_BUFFER_SIZE at each iteration. The number of bytes to copy for each > buffer would then be Math.min(DEFAULT_BUFFER_SIZE, remaining). That's one > possibility. There are others. But no new structures are necessary. What about the case where read() returns 0, e.g., when reading from a socket, but subsequent reads return positive values? // read to EOF which may read more or less than buffer size while ((n = read(buf, nread, buf.length - nread)) > 0) { nread += n; } Then it does not look as if buffer is full or am I mistaken? Thanks, Brian