В следующем вопросе обрабатываются ли байты буферизованными классами так, что файл неявно разрезается на более мелкие блоки, или байты отправляются все за один раз?
как добиться передачи файла между клиентом и сервером с помощью сокета Java
Циклы while читаются и записываются кусками.