Leer un InputStream

Hola que tal.

Estoy realizando un sitio web que me permita ver archivo desde un FTP y me permita subir y bajar archivo, ya tengo la parte donde me muestra un listado de archivos y también la parte de subir archivos, el problema que tengo es al momento de bajar ya que no me permite bajar archivos pesados, esto es lo que llevo hecho.

Estoy realizando un servlet que me permita descargar un archivo.

Envio 3 parametros al servlet desde mi jsp que son el nombre del archivo, la carpeta donde esta el archivo y la ip de un ftp, tengo una clase NegFtps que invoca un método llamado negocio.bajaArchivo(fileName, filePath, servidor), en donde le paso parámetros para conectarse por FTP y bajar un archivo en especifico y este devuelve un InputStream después tengo un while donde leo el InputStream y lo escribo en el OutputStream, una vez que termina de leer el servlet regresa el archivo para ser descargado desde el explorador de internet.

Cuando descargo archivos pequeños como de 100KB no hay problema, pero cuando descargo archivo grandes como de 800KB o mas tarde demasiado y cuando lo guardo solo me guarda una parte, lo mas extraño es que los archivos que trunca los guarda siempre con 128KB, alguien sabrá una mejor manera de hacer la escritura al OutputStream o una mejor manera de bajar un archivo desde un FTP.

El servlet es el siguiente:

 

El codigo que hace el envio por FTP es el siguiente:

 

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

lectura?

No veo el ciclo de lectura que mencionas.

esta en el servlet

aqui esta: