Can you give us more clues? What are the sizes of the source and destination files (both cases)?
My first guess would be character encodings. With the first method, you're not using an encoding; you're reading/writing raw bytes. With the second, I believe that DataOutputStream will encode the character, though I cannot say for sure.
One thing's for sure, I'd recommend wrapping your network I/O with buffered streams.