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

Java Discussion :

Lister le contenu d'un répertoire distant


Sujet :

Java

  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Par défaut Lister le contenu d'un répertoire distant
    Bonjour a tous,

    comme dit dans le titre, je voudrais pouvoir me connecter à un repertoire distant de type http://www.toto.com/repertoire/ afin de pouvoir lister les fichiers s'y trouvant.

    Pour info, je pars du code donné dans la FAQ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    	public static void listeRepertoire ( File repertoire ) {
    		System.out.println ( "repertoire.getAbsolutePath() = " + repertoire.getAbsolutePath());
     
    		if ( repertoire.isDirectory ( ) ) {
    			File[] list = repertoire.listFiles();
    			if (list != null){
    				for ( int i = 0; i < list.length; i++) {
    					listeRepertoire( list[i]);
    				} 
    			} else {
    				System.err.println(repertoire + " : Erreur de lecture.");
    			}
    		} 
    	}
    Le souci se trouve au niveau du repertoire distant (qui doit pouvoir être scanné via une url et qui ne se trouve donc pas en local)

    Quelqu'un peut-il me donner une piste pour savoir comment faire ceci et lister les elements du repertoire ?

    Merci beaucoup

  2. #2
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Par défaut
    Bon, je galère toujours avec ce souci...

    Personne pour m'aguiller ?

  3. #3
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Quel protocole tu vas utiliser ?

    a++

  4. #4
    Membre éclairé Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Par défaut
    Bonjour, as tu essayer de d'ajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .getSelectedFile().getAbsolutePath();
    peut-être qu'il te manquait ce paramètre.

  5. #5
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Par défaut
    Salut et merci de vous interesser à mon problème.

    @adiGuba : protocole HTTP.

    @pendoRa : j'essaie et je te dis ce que ça donne.

    Edit : Je précise mon souci :
    J'ai cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File repertoire = new File("http://www.toto.com/client/dossier/");
    et lorsque je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println ( repertoire.getAbsolutePath());
    j'ai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\...\http:\www.toto.com/client/dossier

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Le protocole HTTP ne permet pas vraiment de lister un répertoire distant. Tu dois donc avoir un script qui te génère cette liste coté serveur ? Si oui il suffit de lire le résultat en passant par la classe URL...

    Et File ne permet d'accéder qu'aux fichiers locaux.

    a++

  7. #7
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Par défaut
    adiGuba, je n'ai pas de script pour me générer cette liste de fichiers côté serveur.

    Ce que tu dis confirme bien ce que je pensais avec le problème du File malheureusement. Par contre, est-ce que tu peux préciser le mode opératoire et cette histoire de classe URL ? J'ai l'impression que je vais peut-être devoir passer par là...

    Merci

  8. #8
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Ben URL permet d'ouvrir une URL et de lire la réponse envoyé par le serveur.

    Maintenant il te faut un script coté serveur pour renvoyer les données.


    a++

  9. #9
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Par défaut
    Petite question (peut-être question idiote) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    			URL monURL 					= new URL("http://www.toto.com/clients/dossier/test.txt");
    			URLConnection connexion 	= monURL.openConnection();
    			InputStream flux 			= connexion.getInputStream();
    			int donneesALire 			= connexion.getContentLength();
     
    			for(;donneesALire != 0; donneesALire--)
    				System.out.print((char)flux.read());
     
    			flux.close();
    Comment se fait-il qu'avec ce code, j'arrive a lire le contenu d'un fichier distant et que pour lister le contenu du dossier distant, c'est pas possible comme ça ?
    (il me semble juste plus facile de lister le contenu d'un dossier que de chercher a lire le contenu d'un fichier mais peut etre que je me trompe)

    ou peut etre, est-ce juste une question de droits ?

  10. #10
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Ben le protocole HTTP permet d'accéder à des fichiers... donc c'est un peu normal.

    a++

  11. #11
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    en général les serveur http sont configuré pour ne pas exposer le listing d'un répertoire, il se contenteront, en général, de lister la page "index.html" si elle est là où retourner un denied. Certains retournent la liste des éléments du dossier, mais dans ce dernier cas, le format dépend du serveur en question et ce sera, pour toi, la même chose qu'un fichier texte quelconque: un InputStream contenant le texte brut. Le protocole HTTP n'est pas fait pour explorer une structure ed dossier, il est fait pour renvoyer des fichiers correspondant à un URL. Et dans beaucoup de cas, quand tu tappera http://server/x/y/z, il y a des forte chance que y/z n'existe pas mais qu'il y a un script en x qui génère le contenu dynamiquement à partir d'une base de données.


    Regarde l'url de cette discussion. Tu crois franchement qu'il y a un dossier /forums/d940943/java/general-java/lister-contenu-repertoire-distant/ sur le serveur de developpez.net ?

  12. #12
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Par défaut
    Ok Tchize, merci pour ta réponse.

    Pour etre complet, je fais ceci dans le cadre d'un live update du logiciel sur lequel je bosse. A partir de mon client, je veux scanner mon dossier d'install en local, scanner un dossier distant dans lequel se trouve la dernière version de mon soft installé, comparer les fichiers sur leurs noms et tailles et downloader les fichiers différents.

    Je voulais faire ceci par HTTP car je cherche des solutions qui feront que je ne serai pas bloqué par un éventuel proxy lors d'un update du soft. HTTP me semble mieux de ce point de vue que FTP.

  13. #13
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Dans ce cas, tu connais bien les fichiers et leur emplacement, non ?
    Donc tu peux faire ce que tu veux par http...

  14. #14
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Par défaut
    Salut hwoarang

    Justement je connais bien l'emplacement des fichiers par contre, ceux-ci peuvent changer, des nouveaux fichiers peuvent arriver et des anciens être supprimés. C'est pour ça que je voulais lister les fichiers de mon repertoire distant dans un premier temps. Et c'est là que je bloque lamentablement ...

  15. #15
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Comme cela a déjà été dit, si tu passes par du HTTP il te faudra un script coté serveur.

    a++

  16. #16
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Par défaut
    adiGuba,

    Quel genre de script, côté serveur (java, perl, bat) ? Je ne peux le lancer que depuis le client. Est-ce possible en java ?
    Ce script sur le serveur scannerait le dossier listerait les fichiers et écrirait cette liste dans un fichier Texte.
    De mon client, je récupère mon fichier texte avec la classe URL ?

    Est-ce que j'ai bien compris ce dont tu parlais ?

  17. #17
    Membre confirmé
    Homme Profil pro
    Chef de projet, développeur .net
    Inscrit en
    Juin 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet, développeur .net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 76
    Par défaut
    Par exemple, si ton serveur gère le php, tu écris un script php qui liste les fichiers de ton serveur et tu l'y met

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    http://www.toto.com/client/listerfichier.php
    ensuite dans ton java tu ouvre cette url et tu parcour le document que t'aura générer ce script php pour avoir la liste des fichier existant sur ton serveur.

  18. #18
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    tu fais comme tout le monde dans ce genre de cas, un script ou fichier statique, à un emplacement bien défini sur le serveur, et qui contient l'index des fichiers, le numéro de la dernière version, etc, et avec ça tu détermine si il faut ou non télécharger de nouveaux fichiers.


    PS: si l'application est en java, pourquoi ne pas plutot utiliser javawebstart, qui se charge automatiquement de mises à jours ?

  19. #19
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Par défaut
    Ok Tchize, merci beaucoup pour le coup de pouce.

    Javawebstart je ne connais pas du tout mais je sens que Google va bien me renseigner.

    Edit : autrement, j'ai résolu mon problème via la méthode d'ElSpopo, que je remercie bien.

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

Discussions similaires

  1. lister le contenu d'un répertoire distant par http
    Par lepatantpato dans le forum WinDev
    Réponses: 6
    Dernier message: 13/10/2013, 20h21
  2. Lister le contenu d'un répertoire présent dans le classpath
    Par kaptainflam dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 28/08/2007, 17h08
  3. Réponses: 5
    Dernier message: 30/08/2006, 19h23
  4. Lister le contenu d'un répertoire
    Par rob_57 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 09/10/2005, 20h16
  5. Lister le contenu d'un répertoire distant
    Par dody dans le forum Langage
    Réponses: 3
    Dernier message: 06/10/2005, 18h23

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