Optimization of rewriting from AudioInputStream to ByteArrayOutputStream

You are copying data 3 times, you can avoid that by first checking the file size, allocating a byte array big enough, and reading into that directly.
It also helps a little bit to pre-allocate space in the ByteArrayOutputStream so it doesn’t have to be increased in size many times.

If you can’t get the file size up front, you can allocate a new byte[] for every block, and put them in a list, until you got them all. Then allocate the final array and copy all of them into the last array. IF you need a byte[] in the end. If you don’t, there may be more efficient ways to proceed.

Read more here: Source link