informatixo
Messages postés129Date d'inscriptionmercredi 4 février 2004StatutMembreDernière intervention25 juillet 2012
-
25 janv. 2008 à 23:06
informatixo
Messages postés129Date d'inscriptionmercredi 4 février 2004StatutMembreDernière intervention25 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.
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.
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.
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.
informatixo
Messages postés129Date d'inscriptionmercredi 4 février 2004StatutMembreDernière intervention25 juillet 20121 27 janv. 2008 à 01:51
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) ?
informatixo
Messages postés129Date d'inscriptionmercredi 4 février 2004StatutMembreDernière intervention25 juillet 20121 26 janv. 2008 à 18:30
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 !
Vous n’avez pas trouvé la réponse que vous recherchez ?
adamo901
Messages postés139Date d'inscriptionmardi 18 janvier 2005StatutMembreDernière intervention 8 décembre 2008 26 janv. 2008 à 19:53
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.
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.
informatixo
Messages postés129Date d'inscriptionmercredi 4 février 2004StatutMembreDernière intervention25 juillet 20121 27 janv. 2008 à 18:59
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.