Problème de chemin relatif [Résolu]

Messages postés
133
Date d'inscription
mercredi 4 février 2004
Dernière intervention
25 juillet 2012
- - Dernière réponse : informatixo
Messages postés
133
Date d'inscription
mercredi 4 février 2004
Dernière intervention
25 juillet 2012
- 27 janv. 2008 à 18:59
Bonsoir à tous,

Je vous écris pour un problème de chemin relatif. La multitude de réponses trouvée grâce à la fonction recherche du site ne m'a malheureusement pas aidé pour mon problème.

Evidement quand je précise un chemin absolu en mettant des doubles antislash celà fonctionne sans problème.

Pour une raison de portabilité, j'ai voulu préciser mes chemins de façon relative.

J'ai deux dossiers qui sont au même niveau. Dans le premier dossier, j'ai la classe dont je me sers et je veux charger un fichier qui se situe dans le second dossier. Donc logiquement, il faut remonter d'un dossier avant de pouvoir aller dans le second dossier qui contient le fichier.

Un petit exemple s'impose je crois ! lol

racine
    |-> dossier1
    |      |-> classe.java
    |
    |-> dossier2
    |      |-> fichier.properties

Version absolu (on est dans C:\dossier1\classe.java) : "C:\\racine\\dossier2\fichier.properties" -> qui fonctionne

Version relative (on est toujours dans C:\dossier1\classe.java) : "..\\dossier2\\fichier.properties"

Message d'erreur généré : java.io.FileNotFoundException: ..\dossier2\fichier.properties (Le chemin d'accès spécifié est introuvable)

Normalement on utilise le "point" pour signifier qu'on est dans le dossier en cours et le "point point" pour signifier que l'on désire remonter d'un cran, dans le dossier parent.

Mais apparement, ici, c'est justement le "point point" qui pose problème.

J'ai essayé d'échapper les caractères "point" de cette façon "\.\.\\dossier2\\fichier.properties" mais évidement celà ne fonctionne pas.

Je m'en remet donc à votre jugement, si quelqu'un a une idée ...

Merci d'avance pour l'attention que vous porterez à ce fil et les contributions que vous apporterez.

Cordialement, informatixo

Que la force soit avec vous !
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
3
Merci
Il n'y a pas d'astuce proprement dite mais c'est vrai que quelque chose qui ne te paraît pas évidemment en regardant la documentation peut s'éclaircir ici. Les ".." n'ont pas lieu d'être comme il y a la méthode getParent(), Java est logique jusqu'au bout, je ne vois pas le problème. Sous Linux, quand tu tapes "cd .." dans ta console, ça permet de remonter d'un niveau aussi et ça ne me perturbe pas que ce ne soit pas écrit comme ça en Java puisque c'est un langage portable qui ne dépend pas d'une plateforme particulière.

Personnellement, je te conseille d'utiliser une variable d'environnement facilement accessible depuis Java et de créer un répertoire (méthodes mkdir() et mkdirs() dans la classe File) où tu mets tes fichiers, c'est ce qui me semble le plus simple.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
1
Merci
Essaie les méthodes getParent() et getParentFile() de la classe java.io.File pour t'en sortir. Avant de poser une question ici, ce serait bien que tu penses à jeter un coup d'oeil dans la javadoc :
http://java.sun.com/javase/6/docs/api/

C'est bien de te soucier de la portabilité, on est en Java quand même et j'en vois trop ici qui parle comme s'il n'y avait que Windows sur Terre.

Commenter la réponse de Utilisateur anonyme
Messages postés
133
Date d'inscription
mercredi 4 février 2004
Dernière intervention
25 juillet 2012
1
Merci
Merci beaucoup de votre aide à tous les deux.

J'avais effectivement pensé à une idée similaire en déclarant ma propre variable d'environnement qui pointerait sur le dossier "src" ou alors en utilisant un fichier lors de l'installation pour mémoriser le chemin absolu vers "src".

Mais j'ai pensé qu'il serait plus simple d'utiliser les chemins relatifs comme en HTML mais apparement d'après ce que vous me dites tous les deux,  cela n'est pas possible.

gouessej - > j'utilise assidument la documentation et c'est d'ailleurs ce qui m'a permis de progresser plus rapidement car il faut bien reconnaître qu'en java elle est bien faite. Cependant, dès fois, certaines astuces n'y figurent pas et rien ne remplacera l'expérience d'un développeur. C'est pour cela que j'ai fais appel à ce forum qui est une communauté d'entraide.

Bon, donc pour résumer, il n'est pas possible d'utiliser les ".." en java pour remonter d'un niveau dans l'arborescence que l'on indique dans un chemin relatif ?

Je vais donc devoir me plier à la terrible réalité et utiliser un intermédiaire (fichier ou variable d'environnement) ?

Encore une fois, merci beaucoup.

Cordialement, informatixo

Que la force soit avec vous !
Commenter la réponse de informatixo
Messages postés
133
Date d'inscription
mercredi 4 février 2004
Dernière intervention
25 juillet 2012
0
Merci
Je te remercie gouessej pour ton aide.

J'ai évidement été faire un tour sur la javadoc mais avant d'utiliser des moyens plus complexes j'ai préféré m'en référer au forum afin de savoir si quelqu'un qui utilise cela courament aurait pas une astuce simple.

J'ai le code suivant :

Properties chemin = new Properties();
chemin.load(new FileInputStream("..\\dossier2\\fichier.properties"));

En revanche, je ne vois pas trop comment utiliser les méthodes getParent() et getParentFile() sachant que mon FileInputStream n'est pas créée car le chemin relatif n'est pas correct. J'ai aussi essayé la variante "../dossier2/fichier.properties" qui ne fonctionne toujours pas à cause des ".."

Je ne dois pas quand même être le seul à vouloir utiliser des chemins relatifs lol

Je suis débutant sous Java et si tu as une idée, pourrait-tu me montrer un exemple qui me mette sur la voie STP ?

En tous les cas merci beaucoup de ton aide.

Que la force soit avec vous !
Commenter la réponse de informatixo
Messages postés
140
Date d'inscription
mardi 18 janvier 2005
Dernière intervention
8 décembre 2008
0
Merci
J'avais eu le même besoin que toi et si je me rappelle bien, la solution était :  l'utilisation de la propriété de la class System :
String chemin = System.getProperties("user.dir");

A partir de cet instant là, vous pouvez accéder là où vous voulez et quelque soit le répértoir d'execution de votre application.

J'espère que ça marcherai pour toi et bonne chance.
Commenter la réponse de adamo901
0
Merci
adamo901 a raison. Une fois que tu as un chemin absolu valide, sers toi en pour construire un objet de type File, applique les méthodes dont je t'ai parlé et utilise getPath() et getAbsolutePath() pour récupérer les chemins. Ce forum est pas mal mais je pense que tu ferais mieux de regarder et de bien comprendre la documentation Java avant de jeter un coup d'oeil ici. Java est très vaste, tu ne peux pas tout trouver ici.

Commenter la réponse de Utilisateur anonyme
Messages postés
133
Date d'inscription
mercredi 4 février 2004
Dernière intervention
25 juillet 2012
0
Merci
Oui c'est vrai que chaque langage de programmation a sa logique. Je suis débutant sous Java, mais il est vrai que ce langage est très attrayant et intéressant.

Je considère donc que mon problème est résolu avac la variable d'environnement (base à partir de laquelle je partirais pour construire tous mes chemins relatifs.

Je trouve intéressant de pouvoir discuter, échanger des problèmes entre développeurs. Cela permet de s'ouvrir à des techniques que l'on a pas l'habitude d'utiliser.

En tous les cas merci beaucoup à tous les deux de m'avoir aidé et au plaisir de s'écrire au détour d'un fil.

Que la force soit avec vous !
Commenter la réponse de informatixo

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.