Я не знаю, какая буферизация применяется по умолчанию, если она есть, но вы можете попробовать обернуть как вход, так и вывод в BufferedInputStream
/ BufferedOutputStream
. Вы также можете попробовать увеличить размер буфера - 1K - довольно маленький буфер. Экспериментируйте с разными размерами, например 16K, 64K и т. Д. Из-за них использование BufferedInputStream
, конечно, не так важно.
С другой стороны, я подозреваю, что это на самом деле не проблема. Если это иногда заканчивается через 10 минут, а иногда и часами, это говорит о том, что происходит что-то очень странное. Когда это занимает очень много времени, действительно ли это прогресс? Размер выходного файла увеличивается? Это использует значительный процессор? Диск постоянно используется?
Примечание с одной стороны: когда вы закрываете in
и out
в блоках finally, вам не нужно делать это и в блоке try
.