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

Langage Java Discussion :

Resolution de chemin ./


Sujet :

Langage Java

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Points : 393
    Points
    393
    Par défaut Resolution de chemin ./
    J'ai un chemin qui pointe sur un fichier, puis un autre de type ./fichier2

    Pour obtenir l'objet file qui pointe sur fichier2, je dois me placer dans le meme repertoire que fichier1 (./) puis ajouter fichier2 en relatif

    En gros File file2=new File(new File(file1).getParentFile(),"fichier2");

    On peut pas laisser à java le soin de comprendre et resoudre le chemin pour Fichier2 ?

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    oui tu peux utiliser le . et le ..

    D'ailleurs la méthode getCanonicalPath() de File te permettra d'obtenir le chemin complet résolu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public static void main(String[] args) {
    		File file = new File("./truc");
     
    		System.out.println(file);
    		System.out.println(file.getAbsolutePath());
    		try {
    			System.out.println(file.getCanonicalPath());
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    }
    t'affichera, selon ton environnement (ici exemple avec windows, sous eclipse, dans le projet TEST, dans le workspace c:\PROJETCS\WORKSPACES) :

    .\truc
    C:\PROJECTS\WORKSPACES\TEST\.\truc
    C:\PROJECTS\WORKSPACES\TEST\truc
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Sinon avec Java 7 et NIO.2 on peut utiliser resolveSibling() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	Path file1 = Paths.get("file1.txt").toAbsolutePath();
    	Path file2 = file1.resolveSibling("file2.txt");
     
    	System.out.println(file1);
    	System.out.println(file2);

    a++

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Points : 393
    Points
    393
    Par défaut
    En faite j'ai pas moyen de m'en sortir sinon en decryptant moi meme le page avec le ./fichier2

    En faite je parse un fichier obj (3d) donc j'ai le chemin (fichier1), et dans ce fichier il y a des references relatives vers des fichiers mtl (materiaux). Un de ces reference est ./fichier2 (fichier dans repertoire courrant); ce pourrait etre ../fichier2 (fichier2 dans repertoire parent).

    J arrive pas avec l utilisation des paths

  5. #5
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Je ne comprend pas ton problème.

    Que ce soit avec Path ou même avec le code que tu as donné cela devrait marcher, comme l'indique joel.drigo.


    Donc quel est le problème ?
    (si besoin donne un petit bout de code, avec le résultat que tu obtiens, et celui que tu voudrais avoir).



    a++

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Points : 393
    Points
    393
    Par défaut
    Je parse le fichier
    G:\myGit\TestGit\TestGit\src\com\test\objects\AmphibianCar\Amfibia.obj

    et dedans j'ai un chemin .\Amfibia.mtl

    je veux donc trouver
    G:\myGit\TestGit\TestGit\src\com\test\objects\AmphibianCar\Amfibia.mtl

    je me retrouve toujours avec
    G:\myGit\TestGit\TestGit\src\com\test\objects\AmphibianCar\Amfibia.obj\.\Amfibia.mtl

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Path p1 = Paths.get(objFilePath).toAbsolutePath();
    		Path p2=Paths.get(libPath);
    			String path=p1.resolve(p2)
    				.toString();
    Vu que ./ et ../ dans mon cas sont des commandes pour le shell (OS dependnat) au final c'est un peu normal (en faite c'est une erreur d'avoir .\Amfibia.mtl comme chemin relatif.

    J'imagine que java ne va pas se charger de me résoudre mon chemin

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Points : 393
    Points
    393
    Par défaut
    A si !

    article intéressant:
    http://blog.eyallupu.com/2011/06/jav...ion-using.html

    Je fait
    Path lookedPath=Paths.get(absPath,''../"+relativePath).normalize();

    Par contre normalize ne comprend pas que absPath est un fichier et non un répertoire donc je rajoute "../".

  8. #8
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Tu dois utiliser resolveSibling() et non pas resolve().
    Et si tu veux obtenir un chemin absolu (sans . ou ..), il suffit d'appeler toAbsolutePath() à la fin...

    a++

Discussions similaires

  1. Resolution de chemin de fichier
    Par Alec6 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 22/11/2010, 11h07
  2. Chemin d'accès au clip et scenario en flash
    Par Gential dans le forum Flash
    Réponses: 4
    Dernier message: 28/02/2003, 10h10
  3. Comment subsituer un chemin par un autre dans un réseau ?
    Par Baillard dans le forum Développement
    Réponses: 3
    Dernier message: 11/08/2002, 14h01
  4. [FORMS] Chemin des icones (intégré FAQ 150 QR)
    Par jerome62 dans le forum Forms
    Réponses: 2
    Dernier message: 30/07/2002, 08h32
  5. Algorithme de recherche de chemin
    Par amelie gaya dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 09/06/2002, 15h29

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