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 :

Lister toute ce qu'il y a dans un FTP


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Par défaut Lister toute ce qu'il y a dans un FTP
    Bonjour,

    Je souhaite trouver un algorithme JAVA qui permet de parcourir tous les dossiers et sous dossiers et ainsi de suite. Et cela a partir de d'un repertoire racine c'est pour monter le meme fichier index.html dans tous les dossiers de mon FTP.

    Mais quelqu'un avait deja l'algo pour un explorateur de fichier simple sa m'aiderais.

    Merci

  2. #2
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Par défaut
    Merci comme meme

    Mais ce n'est pas sa, je l'ai testé et elle va dans des repertoires et ne revien pas dans certains.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Par défaut Listé toute ce qu'il y a dans un FTP
    J'ai développé un FTP en JAVA et je voudrais pouvoir lister TOUS ce qu'il a dedans notamment les dossiers.

    Pour y rajouter dans chaque dossier le même fichier index.html, ce listage que je veut faire fonctionne de la même façon que celui qu'on peut retrouver sur la FAQ. Mais celui-ci ne s'adapte pas quelque soit la librairie FTP que j'utilise (avec les classes de connexion et navigation).

    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
     
    public static void listeRepertoire ( File repertoire ) {
            System.out.println ( repertoire.getAbsolutePath());
     
            if ( repertoire.isDirectory ( ) ) {
                    File[] list = repertoire.listFiles();
                    if (list != null){
    	                for ( int i = 0; i < list.length; i++) {
    	                        // Appel récursif sur les sous-répertoires
    	                        listeRepertoire( list[i]);
    	                } 
                    } else {
                    	System.err.println(repertoire + " : Erreur de lecture.");
                    }
            } 
    }

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2004
    Messages : 201
    Par défaut
    Tu prends le risque d'avoir une boucle infinie avec ton algo. Par exemple si tu as un lien symbolique dans un des répertoires menant vers un autre, ... J'ai déjà eu le même problème.

  6. #6
    Membre expérimenté Avatar de aJavaDeveloper
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 248
    Par défaut
    Pour ma part, j'utilise le client FTP de la librairie Commons-Net de Apache.
    La classe FTPClient offre une méthode listFiles() qui renvoie un tableau de FTPFile.
    Un FTPFile possède un champ statique appelé FILE_TYPE.
    Ce champ représente, comme son nom l'indique, le type du fichier.
    L'une de ses valeurs possibles est SYMBOLIC_LINK_TYPE.
    Je pense donc qu'il est très simple d'adapter l'algo de la FAQ à ce client FTP tout en le sécurisant.
    Il suffit de tester le type du fichier pour éviter les boucles infinies : s'il s'agit d'un lien symbolique, il ne faut pas faire d'appel récursif...

    [EDIT] Voici un code que je viens d'écrire et qui fonctionne :
    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
    import java.io.IOException;
    import java.net.SocketException;
     
    import org.apache.commons.net.ftp.FTPClient;
    import org.apache.commons.net.ftp.FTPFile;
    import org.apache.commons.net.ftp.FTPReply;
     
    public class FTPBrowser {
     
    	public static void main(String[] args) {
    		try {
    			FTPClient client = new FTPClient();
    			connect(client, "FTPServer", "login", "password");
    			browse(client, "/");
    			disconnect(client);
    		}
    		catch(Exception e) {
    			e.printStackTrace();
    		}
    	}
     
    	public static void browse(FTPClient client, String path) throws IOException {
    		FTPFile[] files = client.listFiles(path);
    		for(int i=0; i<files.length; i++)
    		{
    			if(files[i]!=null && !files[i].getName().equals(".") && !files[i].getName().equals(".."))
    			{
    				System.out.println(path + files[i].getName());
    				if(files[i].getType() != FTPFile.SYMBOLIC_LINK_TYPE && files[i].isDirectory())
    					browse(client, path + files[i].getName() + "/");
    			}
    		}
    	}
     
    	public static void connect(FTPClient client, String ftpServerAddress, String login, String password) throws SocketException, IOException {
    		//try to establish a connection with the FTP server
    		client.connect(ftpServerAddress);
     
    		//test the connection
    		if(FTPReply.isPositiveCompletion(client.getReplyCode())) 
    		{
    			//try to log in (for a authenticated access)
    			if(login != null && !login.equals("") && password != null && !password.equals(""))
    			{
    				client.login(login, password);
    				if(FTPReply.isPositiveCompletion(client.getReplyCode()))
    					System.out.println("Connected to the FTP server '" + ftpServerAddress + "'...");
    				else
    					System.err.println("Unable to login to the FTP server '" + ftpServerAddress + "' - server reply: " + client.getReplyString());
    			}
    		}
    		else
    			System.err.println("Unable to establish a connection with the FTP server '" + ftpServerAddress + "' - server reply: " + client.getReplyString());
    	}
     
    	public static void disconnect(FTPClient client) throws IOException {
    		client.logout();
    		client.disconnect();
    		System.out.println("Disconnected from the FTP server...");
    	}
    }
    Les dépendances de ce code sont les librairies
    • commons-net
    • jakarta-oro

Discussions similaires

  1. Lister toutes les dépendances dans OPC
    Par letophe44 dans le forum z/OS
    Réponses: 1
    Dernier message: 15/05/2012, 12h46
  2. lister tout les modules installer de perl
    Par black_code dans le forum Modules
    Réponses: 6
    Dernier message: 05/08/2005, 18h20
  3. [firebird 1.5] lister toutes les tables
    Par c0rwyn dans le forum SQL
    Réponses: 2
    Dernier message: 02/09/2004, 14h36
  4. Réponses: 8
    Dernier message: 17/10/2002, 12h52

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