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 :

Jar exécutable et chemin relatif


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2012
    Messages : 24
    Points : 25
    Points
    25
    Par défaut Jar exécutable et chemin relatif
    Bonjour,

    Je souhaite créer une application qui permet de lister tous les fichiers d'un répertoire dans un fichier texte.

    Pour cela j'ai créé un jar (executé par un .bat), ce jar a pour but de lister tous les fichiers du repertoire dans lequel il se trouve.

    -> J'aimerais connaitre le chemain de mon .jar pour l'enregistrer dans une constante, comment faire ?

    Ma constante servira a naviguer dans les répertoires en relatif autour de mon jar.

    Merci !

  2. #2
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Le répertoire courant normalement c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String fullCurrentPath = System.getProperty("user.dir");
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2012
    Messages : 24
    Points : 25
    Points
    25
    Par défaut
    En prenant en compte la solution de robin56, j'obtiens les résultats suivants :

    Je pars du principe que le répertoire mondossier se situe au même niveau que mon jar.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    File repertoire = new File("/mondossier"); 
    String chemin = repertoire.getAbsolutePath(); // C:\mondossier
     
    File repertoire1 = new File("./mondossier"); 
    String chemin1 = repertoire1.getAbsolutePath(); // C:\mondossier
     
    File repertoire2 = new File("mondossier"); 
    String chemin2 = repertoire2.getAbsolutePath(); // C:\<chemin du jar>\mondossier
     
    File repertoire3 = new File(System.getProperty("user.dir")+"/mondossier");
    String chemin3 = repertoire3.getAbsolutePath(); // C:\<chemin du jar>\mondossier
    De là deux questions :
    1) Pourquoi le fait d'ajouter / ou ./ fait partir le chemin de C:/ sachant qu'en développement Web le ./ fait référence à la racine de notre application ?

    2) Utiliser un chemin sans le / devant donne le même résultat que le System.getProperty("user.dir"), est ce plus pratique d'utiliser les chemins relatifs sans le / pour la navigation ou passer par le System.getProperty("user.dir") ?

  4. #4
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Un élément de réponse possible est que '.' fait référence au dossier courant, c'est à dire celui d'où la commande d'exécution est lancée

    dans java -jar mon/super/chemin/truc.jar

    . sera <dossier courant>, et non <le dossier courant>/mon/super/chemin/, ou se trouve le jar
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2012
    Messages : 24
    Points : 25
    Points
    25
    Par défaut
    En continuant sur ma lancée :
    Mon jar scan tous les fichiers qui sont au même niveau que lui.
    J'ai besoin de stocker dans un fichier de configuration tous ces noms de fichier en relatif par rapport à l'emplacement de mon jar.

    J'ai créé la méthode suivante pour lister mes fichiers :

    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
    /**
             * Récupère tous les file d'un dossier et ceux des sous-dossier
             */
    	public ArrayList<File> listeFichierSousDossier(String chemin) {
    		ArrayList<File> lstUniquementFichier = new ArrayList<File>();
    		File[] lstFichierDansRep= new File(chemin).listFiles();
    		for(int i=0;i<lstFichierDansRep.length; i++) {
    			if(lstFichierDansRep[i].isFile()) {
    				lstUniquementFichier.add(lstFichierDansRep[i]);
    			} else {
    				ArrayList<File>lstFichierDuSousRep = listeFichierSousDossier(lstFichierDansRep[i].getAbsolutePath());
    				lstUniquementFichier.addAll(lstFichierDuSousRep);
    			}				
    		}		
    		return lstUniquementFichier;
    	}
    et je l'appelle de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ArrayList<File> lstFichiers = listeFichierSousDossier(System.getProperty("user.dir"))
    // = C:\le\repertoire\du\jar\
    Le problème c'est que tous les paths de mes File retournent les chaines suivantes :
    C:\le\repertoire\du\jar\dossier\fichier1.ext
    C:\le\repertoire\du\jar\dissier\fichier2.ext
    etc

    Or ce que j'aimerais c'est juste le chemin relatif au jar, donc dossier\fichier.ext.


    -> Ce que je peux faire c'est récupérer le path de mes File :
    C:\le\repertoire\du\jar\dossier\fichier1.ext
    et enlever le
    System.getProperty("user.dir") de la chaine,
    je me retrouve donc avec dossier\fichier1.ext.

    N'y a t'il pas une méthode plus propre ?

Discussions similaires

  1. Chemin relatif [JAR]
    Par Floriang33 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 22/01/2010, 17h25
  2. utiliser les chemin relatif de fichier depuis un .jar
    Par wechteuf dans le forum NetBeans
    Réponses: 2
    Dernier message: 27/12/2008, 16h53
  3. Chemin relatif à partir d'un Jar
    Par NizarK dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 13/12/2008, 08h53
  4. [Debutant] Exécution d'un batch contenant des chemins relatifs
    Par Goupsy dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 14/12/2007, 10h31
  5. [JSP] Include, problème de chemin relatif
    Par dafly dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 15/04/2004, 14h11

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