Я думаю, что это проблема Функция поддержания канала управления:
Во время передачи файлов соединение для передачи данных занято, но соединение для управления бездействует.FTP-серверы знают, что управляющее соединение используется, поэтому не будут закрывать его из-за отсутствия активности, но сетевым маршрутизаторам гораздо сложнее узнать, что управляющие соединения и соединения для передачи данных связаны друг с другом.
ftpClient.setControlKeepAliveTimeout(300); // set timeout to 5 minutes
и проверить его с помощью
int iReply = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply))
{
ftpClient.disconnect();
System.err.println("FTP server refused connection.");
System.exit(1);
}