This will try to take better advantage of the buffered reading. Instead of pushing one byte at a time to the array list for each section, find the end index for each section, then alloc the arraylist and copy the data into it all at once.