This week's book giveaway is in the OCMJEA forum. We're giving away four copies of OCM Java EE 6 Enterprise Architect Exam Guide and have Paul Allen & Joseph Bambara on-line! See this thread for details.
I don't think this will solve the problem, but there is a flaw in your program - the read(byte) method does not necessarily fill the entire array. Especially the last read will fill it only partially (unless the total size is a multiple of the array size). Use the following code to fix this: