IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Transmission FTP flux


Sujet :

avec Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 155
    Points : 85
    Points
    85
    Par défaut Transmission FTP flux
    Bonjour,

    Je développe une application qui récupère des fichiers dans un répertoire donné.
    Ces fichiers sont déposés dans le répertoire par FTP et je me suis rendu compte que mon application récupère le fichier alors qu'il n'a pas fini d'être uploader...
    J'ai donc une Exception de type :
    java.io.EOFException

    (Je pense que le problème se trouve là)

    Est ce que quelqu'un pourrai me dire comme je peux vérifier avant de récupérer le fichier si le upload est terminer ? C'est à dire si le fichier est complet ?

    Merci pour vos réponses...

  2. #2
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Il n'existe pas de méthode pour ça.

    Cependant une méthode couramment utiliser est de créer un fichier à côté lorsque le téléchargement est terminé.

    En moins fiable tu peux vérifier à court intervalle la taille du fichier.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2011
    Messages : 214
    Points : 338
    Points
    338
    Par défaut
    Citation Envoyé par titi42 Voir le message
    Ces fichiers sont déposés dans le répertoire par FTP et je me suis rendu compte que mon application récupère le fichier alors qu'il n'a pas fini d'être uploader...
    Est-ce que le serveur FTP est toujours en train d'écrire dans le fichier ? Si la réponse est "non" alors il n'y a pas de solution miracle.

    Si "oui" alors tu peux essayer d'utiliser un FileLock pour t'assurer que tu es le seul à accéder au fichier (donc que l'autre process à fini de l'écrire).

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 155
    Points : 85
    Points
    85
    Par défaut
    Bonjour,

    Merci pour vos réponses rapides désolé de ne répondre que maintenant mais j'étais pris par un autre projet ces jours-ci.

    J'ai regardé les FileLock je n'ai peut être pas très bien compris mais mon serveur FTP est indépendant de mon application donc je ne vois pas trop comment l'utiliser ?

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2011
    Messages : 214
    Points : 338
    Points
    338
    Par défaut
    However, the two threads that contend for the same file may be in different JVMs, or one may be a Java thread and the other some native thread in the operating system.

    Cependant les deux threads qui se "disputent" le même fichier peuvent être dans des JVM différentes, ou l'un peut être un thread Java et l'autre un thread natif de l'OS.
    Donc ça peut marcher si ton serveur FTP verrouille le fichier pendant qu'il est uploadé. Après je ne suis pas spécialiste en serveurs FTP, c'est peut être configurable dans ton cas ?

  6. #6
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 072
    Points : 7 974
    Points
    7 974
    Par défaut
    Cette question me rapelle ce post, peut etre ca aidera ...

    http://www.developpez.net/forums/d10...r-complet-ftp/
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 155
    Points : 85
    Points
    85
    Par défaut
    Bonjour,

    Merci de vos réponses après pas mal de recherche, c'est bon j'ai trouvé une solution.
    La solution tourne sur une machine linux debian, on contrôle donc si le flux ftp est terminé et si oui on traite le fichier.
    Sur linux il y a une commande qui permet de voir les fichiers ouverts lsof. Si le fichier est ouvert on ne le traitera pas. Voilà le code utilisé si cela peut aider...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    try {
                    Process p = Runtime.getRuntime().exec("sudo lsof");
     
                    BufferedReader stdInput = new BufferedReader(new InputStreamReader(
                          p.getInputStream()));
     
                    // lire la sortie de la commande dans un BufferedReader
                    while ((s = stdInput.readLine()) != null) {
                      if (s.contains(Nom du fichier à traiter)) {
                        test = true;
                      }
                    }
                  } catch (Exception e) {
                    e.printStackTrace();
                  }
                  if (!test) {
                    // on lance le traitement
                  }
    Voilà @ +

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Protocole de transmission de flux audio
    Par stalacta dans le forum Réseau/Web
    Réponses: 9
    Dernier message: 12/05/2014, 19h12
  2. [FTP] Flux FTP (stream) et DirectoryIterator
    Par aRKhamTaro dans le forum Langage
    Réponses: 4
    Dernier message: 25/11/2010, 16h03
  3. transmission fichier chiffré via flux avec socket
    Par Papipen dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 26/06/2009, 18h20
  4. [FTP] Récupération de flux xml
    Par Alcohollica dans le forum Langage
    Réponses: 2
    Dernier message: 13/03/2007, 10h01
  5. transmission par ftp...
    Par youp_db dans le forum Développement
    Réponses: 8
    Dernier message: 24/09/2005, 19h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo