Will this work without hogging loads of memory?  The toByteArray seems like it would load the whole thing into memory.  We really want to be sure we're supporting streaming on all the I/O, the files have the potential to be enormous for large applications.