¿Qué biblioteca de cliente FTP de Java debo utilizar? [cerrado]

91

Dado que no recibí respuestas positivas a mi última pregunta. Intentaré escribir yo mismo un subprograma de carga FTP de Java.

Mi pregunta es: "¿Puede recomendarme una biblioteca de cliente FTP de Java para mí?"

Quiero que sea:

  • estable
  • capaz de manejar modos pasivo y activo
  • capaz de proporcionar información sobre el progreso de la carga
  • lanzar excepciones capturables si algo salió mal (especialmente cuando una carga no se realiza correctamente)
  • barato / de uso gratuito, preferiblemente de código abierto

Encontré esta descripción general de algunas bibliotecas, pero como este artículo es de 2003, tal vez hayan ocurrido algunos desarrollos nuevos :)

Tader
fuente

Respuestas:

56

Consulte Apache commons-net , que contiene utilidades FTP. En la parte superior de mi cabeza, no estoy seguro de si cumple con todos sus requisitos, ¡pero ciertamente es gratis!

Leigh
fuente
Este bit de información se agrega aquí, aunque no está relacionado con la pregunta, solo quería colocarlo en algún lugar. commons-net FtpClient todavía carece de soporte para IPv6 (RFC 2438) en la última versión 2.0 de 2008. Sin embargo, se supone que 2.1 lo incluye. No se lanzan muy a menudo ...
Moritz Ambos
2
@Moritz Ambos: Eso se solucionó finalmente en 2010. Consulte issues.apache.org/jira/browse/NET-288 .
sleske
Estoy tratando de usar la biblioteca FTP sugerida pero me está dando problemas detrás de un proxy de red, ¿alguna sugerencia?
Ashish Sharma
2
La velocidad es bastante lenta con esta biblioteca, buscando una biblioteca más rápida.
Tommy Ng
@TommyNg Arreglé la ralentización eliminando una cuota del servidor FTP y aumentando el tamaño del búfer. Puede que esto te ayude.
gouessej
17

ftp4j es el mejor, tanto por características como por licencia:

http://www.sauronsoftware.it/projects/ftp4j/

Cocco
fuente
5
La desventaja es que no está en Maven Central
yegor256
9
No entiendo por qué no subir la biblioteca a Maven Central ... ¿Es una decisión religiosa o política?
gavenkoa
2
@gavenkoa, según tengo entendido, para cargar su proyecto en maven central, casi se ve obligado a usar maven como herramienta de compilación. Si uno está construyendo con ant (como ftp4j), no es tan fácil, y supongo que al autor no le importa lo suficiente como para que esto suceda.
Paŭlo Ebermann
1
La recopilación de dependencias con repositorios de Maven es habitual para Java (como pip para Python, Gems para Ruby). Incluso en Ant hay Ivy. Es posible que los desarrolladores no tengan tiempo ni dinero para realizar el trabajo de subida, ¿quién sabe?
gavenkoa
@ PaŭloEbermann No, es posible usar Ant como herramienta de compilación y cargar la biblioteca en Maven Central, esto es lo que hacemos para JogAmp (JOGL, JOAL, JOCL). Además, puede tener su propio repositorio de Maven en lugar de abusar de la centralización para respetar algunas consideraciones políticas que comprendo completamente.
gouessej
6

Sí, edtFTPj de EnterpriseDT es estable (lanzado por primera vez en 2000), tiene todas las funciones que pueda necesitar y también es de código abierto.

Se utiliza en un montón de proyectos de código abierto (así como en muchos proyectos comerciales) y es reconocida como una de las bibliotecas cliente más rápidas .

Como señaló otro cartel, si desea actualizar a SFTP y / o FTPS, es una ruta de actualización simple que requiere muy pocos cambios de código.

Bruce Blackshaw
fuente
No pude hacer funcionar ftp4j debido a alguna excepción IllegalReply. Este funcionó bastante bien.
anujin
El artículo que mencionas como prueba de la velocidad de edtFTPj data de 2006. Está realmente desactualizado
ftrujillo
2
Este paquete no es gratuito (y muy caro) tan pronto como necesite funciones "profesionales", como conectarse a través de un proxy ...
Eric Nicolas
4

Sin duda, la red común. :) La mayoría de los proyectos de código abierto lo usan en estos días.

yc

yclian
fuente
1

He utilizado con éxito la biblioteca FTP de Enterprise DT , que es gratuita y de código abierto. No puedo compararlo con otras bibliotecas (como la biblioteca Apache Commons Net) ya que no las he usado. Proporciona una ruta de actualización simple a SFTP (sobre SSH) y FTPS (sobre SSL), aunque es un producto comercial de pago.

Cozzman
fuente
1

Las redes comunes de Apache reciben actualizaciones con más frecuencia recientemente, mientras que la biblioteca Enterprise DT parece actualizarse con más frecuencia.

Gatorhall
fuente
0

Estaba descargando archivos de video. El FTPClient de Apache falló, descargó el video razonablemente rápido. pero cuando traté de reproducir el video, perdió fragmentos en la mitad del video. ftp4j descargaría el video completo sin pérdida.

ftp4j ftw

nicolai.tesela
fuente
0

También tiene este artículo de 2006 que enumera diferentes opciones para clientes FTP.

commons-net es bueno, pero FTP-GO puede brindarle algunas de las funciones más avanzadas que está buscando.

kagi Ftp-Go

VonC
fuente
El primer enlace está muerto
gouessej
1
@gouessej El primer enlace no está muerto. El segundo fue. He restaurado el enlace "FTP-GO".
VonC
1
Tienes razón, gracias. Tienes que pagar una tarifa de 750 USD para obtener el código fuente de esta API: s
gouessej