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

Entrée/Sortie Java Discussion :

[FTP] Comment uploader un fichier d'un répertoire à l'autre ?


Sujet :

Entrée/Sortie Java

  1. #1
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 147
    Points : 78
    Points
    78
    Par défaut [FTP] Comment uploader un fichier d'un répertoire à l'autre ?
    Bonjour à tous et à toutes,

    voici mon problème,

    Voici ce que je réalise, je teste dans un premier temps les fichiers du directory "folder1" pour savoir si la dernière modification de ceux ci est égale à "4/05/04", si oui je désire les uploader vers un autre directory nommé "folder2".

    Mon problème est que je n'y arrive pas, le teste fonctionne bien pour savoir si la dernière modification de ceux ci est égale à "4/05/04", il rentre dans ma conditionelle eta ffiche ce qu'il doit afficher, n'affiche pas d'erreur en retour dans la console, mais n'upload pas les fichiers qui ont rempli cette condition !!

    Voici le contenu des variables suivantes:
    String directory = "/folder1";
    String destinationFolder = "C:/folder2";
    C'est deux directories ce trouvent sur la C:

    Je ne sais pas si ca peux aider mais si je ne mets pas destinationFolder = "C:/folder2"; mais /folder2 il m'affiche l'erreur suivante :
    java.io.FileNotFoundException : /folder2/monFichier.txt <The system cannot find the path specified>
    J'avoue que c'est normal puisque /folder2 est vide et que le fichier dont je parle monFichier.txt ce trouve dans /folder et sa dernière modification est égale à "4/05/04".
    Alors pourquoi n'affiche t'il rien lorsque j'ajoute C: ??

    Enfin voilà je vous montre mon code, j'ai surement fait une bète erreur :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
      public void getDataFiles( String server,
                                String username,
                                String password,
                                String directory,
                                String destinationFolder)throws Exception
      {
     
        FTPClient ftp = new FTPClient();
     
        try {
          // Connect and logon to FTP Server
          int reply;
          ftp.connect(server);
          ftp.login(username,password);
          System.out.println("Connected to " + server + ".");
          System.out.print("Ftp reply :"+ ftp.getReplyString());
          // After connection attempt, you should check the reply code to verify
          // success.
          reply = ftp.getReplyCode();
          System.out.print("Reply code :"+ reply);
          if(!FTPReply.isPositiveCompletion(reply)) {
            ftp.disconnect();
            System.err.println("FTP server refused connection.");
            System.exit(1);
          }
          else{
            System.err.println("We are connected on the FTP server and will transfer files.");
            FTPFile[] files = ftp.listFiles(directory);
            System.out.println( "files : " + files );
            System.out.println( "Number of files in dir: " + files.length );
            DateFormat df = DateFormat.getDateInstance( DateFormat.SHORT );
            System.out.println( "Date format: " + df);
            for( int i=0; i<files.length; i++ )
            {
              System.out.println("\n FileName : " + files[i].getName());
              System.out.println( "FileSize(): " + files[i].getSize() );
              Date fileDate = files[ i ].getTimestamp().getTime();
              System.out.println( "FileDate: " + fileDate );
              System.out.print("DateFormat : " + df.format( files[ i ].getTimestamp().getTime() ) );
     
              if ( "4/05/04".equals(df.format( files[ i ].getTimestamp().getTime() ) ) ){
                System.out.println("This file was created on 4/05/04 : " + files[i].getName());
                File file = new File( destinationFolder + File.separator + files[ i ].getName() );
                FileOutputStream fos = new FileOutputStream( file );
                // transfer file
                ftp.retrieveFile( files[ i ].getName(), fos );
                System.out.println( files[ i ].getName()+ " was tranfered successfully ");
                fos.close();
                file.setLastModified( fileDate.getTime() );
              }
              System.out.print("\n______________________________________________");
            }
          }
          // Logout from the FTP Server and disconnect
          ftp.logout();
        } catch(IOException e) {
          e.printStackTrace();
        } finally {
          if(ftp.isConnected()) {
            try {
              ftp.disconnect();
              System.err.println("\n We disconnect from the FTP server.");
            } catch(IOException ioe) {
            }
          }
        }
     
       }
    J'espère avoir su expliquer correctement mon problème.

    Merci a vous pour votre aide, car je suis un peu perdu là.

    Ciao

  2. #2
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 147
    Points : 78
    Points
    78
    Par défaut
    A présent j'ai modifié ceci,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ftp.retrieveFile( files[ i ].getName(), fos );
    par ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    String path = "/folder1/"+ files[i].getName();
    InputStream is = ftp.retrieveFileStream(path);
    ftp.storeFile("/folder2/"+ files[i].getName(),is);
    et les fichiers sont uploadés, mais ils sont vides , je ne sais pas pourquoi, il sont tous bien dans le directory "folder2" mais ils ont une taille de 0k. là je ne comprends plus rien moi !

    Si quelqu'un sais m'aider, d'avance je l'en remercie car je nage.

  3. #3
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 147
    Points : 78
    Points
    78
    Par défaut
    J'ai modifié le dernier point car j'avais l'impression que mon erreur vennait du fait que j'utilisai un .getName() sur mon fichier et que je ne passais donc que son nom ! enfin je me comprends.

    J'ai donc modifié le code par ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                String path = "/folder1/"+ files[i];
                InputStream is = ftp.retrieveFileStream(path);
                ftp.storeFile("/folder2/"+ files[i],is);
    Mais sa foire et me donne ceci comme erreur a présent:
    java.rmi.RemoteException: EJB Exception: ; nested exception is:
    java.lang.NullPointerException
    Est ce que cela veux dire que mon array files ne vaut rien ?? et que je sois obligé de lui appliqué une méthode .getName() pour obtenir qq chose en retour?

    Merci pour votre aide, moi je continue ma quête, ciao

  4. #4
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 147
    Points : 78
    Points
    78
    Par défaut
    Un autre problème que je crois avoir compris est que si j'obtien les bons fichiers au bon endroit mais vide vient du fait que je n'upload pas ces fichiers, ceux ci sont crée, vide grace à cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    File file = new File( destinationFolder + File.separator + files[ i ].getName() );
    par contre je ne sais toujours pas comment faire pour uploader correctement ce fichier vers mon répertoir "folder2"

    Si quelqu'un a une idée sa serai super car je suis plus que perdu sur ce coup là !!!

    Merci d'avance a vous pour votre aide et le temps consacré à m'aider.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    Le constructeur de File ne crée aucun fichier. Si le fichier est vide, ca ne vient pas de cette ligne.
    Mess with the best, die like the rest!

  6. #6
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 147
    Points : 78
    Points
    78
    Par défaut
    Ha, car ici il indique ceci http://java.sun.com/j2se/1.4.2/docs/...a/io/File.html

    File(String pathname)
    Creates a new File instance by converting the given pathname string into an abstract pathname.

    t'as pas une idée de la bonne méthode pour uploader un fichier vers un ftp toi? si tu sais me dire quoi par rapport a ce que j'ai fait plus haut?

    merci déjà pour ton aide ciao

  7. #7
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 147
    Points : 78
    Points
    78
    Par défaut
    Le problème vien bien de File qui me créai un fichier vide de meme nom et de même type que spécifier !

    Voici ce que j'ai fait et ca fonctionne a merveille !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
              if ( "1/07/05".equals(date2)){
                System.out.println("\t This file was created on 1/07/05 : " + files[i].getName());
                // We will transfer the new file
                String path = directory + files[i].getName();
                InputStream is = new FileInputStream(path);
                storeFile = ftp.storeFile(destinationFolder + files[i].getName(),is);
                System.out.println("StoreFile" + storeFile);
                if (storeFile == false){
                  System.out.println("\n Tranfer for file :" + files[i].getName() +" failed.");
                }
                // Close the InputStream
                is.close();
              }
    Voilà ciao

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

Discussions similaires

  1. comment uploader un fichier vers le serveur ftp ?
    Par octal2007 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 19/01/2008, 21h39
  2. [Librairies] Comment uploader un fichier via email ?
    Par pdtor dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 09/05/2006, 11h33
  3. [FTP] Comment tester un fichier distant ?
    Par Shrieker dans le forum Langage
    Réponses: 4
    Dernier message: 28/11/2005, 14h44
  4. comment uploader un fichier ?
    Par cb68 dans le forum Web
    Réponses: 1
    Dernier message: 08/10/2005, 13h06
  5. [CF][PPC/C#] Comment lister les fichiers d'un répertoire ?
    Par dady dans le forum Windows Mobile
    Réponses: 18
    Dernier message: 20/05/2005, 14h35

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