Bonjour,
Je rencontre un problème en ce moment en utilisant la librairie "commons.net" et plus particulière les instances de "FTPClient".
Je pense que c'est un problème assez classique et que quelqu'un l'a déjà rencontré.
Sur FTP se trouve un répertoire ou un client peut déposer des fichiers. J'ai une application qui, toutes les 15 minutes, scrute le répertoire FTP pour copier dans un répertoire de travail local tous les fichiers du répertoire FTP.
Pour cela on utilise une instance "ftp" de la classe "FTPClient" pour pouvoir se connecter au serveur FTP puis on récupère un fichier désigné par un chemin 'ftpFicPath' grâce à la commande "res = ftp.retrieveFile(ftpFicPath, fos);" où "fos" est un FileOutputStream qui permet de réaliser la copie.
Cela fonctionne bien sauf si on essaye de transférer un fichier (sur le répertoire de travail local) qui est en cours d'écriture sur le serveur FTP.
Exemple : un client copie un fichier de 10 MO dans le répertoire du serveur FTP; la copie sur FTP n'étant pas terminée, mon programme Java scrute ce répertoire, il découvre ce nouveau fichier et commence le transfert sans que ce fichier soit intégralement copié dans le répertoire FTP. Dans ce cas le fichier n'est pas intégralement transféré dans le répertoire de travail et aucune erreur n'est retournée.
Je souhaiterais savoir comment détecter le fait que le fichier est en cours d'écriture sur le serveur FTP à l'aide de cette librairie. Je souhaite aussi éviter toute solution du genre : vérifier la taille du fichier à 5 secondes d'intervalle (si la taille est différente alors le fichier est en cours d'écriture) car si la taille du fichier est la même rien ne garantit que ce fichier n'a pas pu être complété durant ces 5 secondes sur le serveur FTP.
Merci
Partager