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 :

problème chemin et slash


Sujet :

Langage Java

  1. #1
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Points : 730
    Points
    730
    Par défaut problème chemin et slash
    Bonjour,

    J'ai un programme qui doit récupérer dans un fichier .properties un chemin vers un autre fichier. Pour l'instant rien de compliqué.

    Mon programme doit tourner sous windows & linux et le chemin inscrit peux prendre les formes suivantes :
    - c:\Programes Files\Monprog
    - \\192.168.0.1\Monprog
    - /opt/MonProg

    Pour l'instant le premier je récupère c:\\Programes Files\\Monprog
    le second me retourne : \\192.168.0.1Monprog sans le slash de séparation. Troisième pas encore testé.

    Mon premier problème c'est de pouvoir récupérer le chemin sans erreurs qu'il soit en local distant sous windows ou linux.

    Deuxième problème Je dois accéder à un fichier dans sous répertoire et donc ajouter MonSousRep\mon_fichier.txt

    j'ai fais comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    String separateur = java.io.File.separator;
     
    String CheminFichierALire = prop.getChemin()+separateur+"ressources"+separateur+"monfichier.txt";
    avec prop.getChemin qui me renvoie une des trois résultats affichés au-dessus.

    Pour le premier cas il me retourne :
    c:\\Programes Files\\Monprog\\ressources\\monfichier.txt
    Ca marche c'est cool
    \\192.168.0.1Monprog\\ressources\\monfichier.txt forcément ca va pas...
    vu que je suis sous windows il me retourne separateur == \\ alors que c'est un chemin réseau.
    Troisième pas testé.

    Merci.

  2. #2
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Les valeurs des chemins des fichiers, style \\192.168.0.1\Monprog sont obtenues comment par ton programme ? C'est un fichier de properties que tu écris toi même ? C'est à partir du code que tu nous montres ?
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

  3. #3
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Points : 730
    Points
    730
    Par défaut
    Je récupère le chemin vers une appli dans un fichier.
    Et dans un deuxième temps je vais chercher un fichier dans un répertoire spécifique, donc je suis obligé de compléter le chemin.

  4. #4
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Donc au départ tu as le nom du fichier, donc particulièrement ce \\192.168.0.1\Monprog, dans un fichier texte que tu as édité toi même ?... Ce n'est pas un fichier de propriétés ?

    En ce cas il est étrange que tu perdes le \ ; soit il y a une erreur de lecture, mais plus probablement une erreur d'affichage : si tu le fais par System.out.println, alors le \ est considéré comme une erreur. En fait il y est, mais tu ne le vois pas.

    Pour générer tes paths de fichiers, je te conseille de procéder de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    File dir = new File("pathVersDir"); 
    File fPlusLoin = new File(dir, "plusLoin");
    File fEncorePlusLoin = new File(fPlusLoin, "encorePlusLoin");
    Etc.
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

  5. #5
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Points : 730
    Points
    730
    Par défaut
    Argghh ca marche pas mieux si j'ai un chemin du style c:\.. ca passe mais si j'ai chemin réseau ca va pas..

    La récupération dans le fichier properties
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Parametres conn = new Parametres();
    		Properties properties	= new Properties();
    		//récup du chemin du fichier 
    		try {
    			properties.load(new FileInputStream(fichierParam));
    			conn.setUrl(new File(properties.getProperty("valeurDuPath")));
    		}catch ...
    Mon fichier .properties

    valeurDuPath=\\192.168.0.40\MonRep
    la récup

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    File dir = conn.getUrl();
    File rep = new File(dir, "bin");
    File fichierIni = new File(rep,"unfichier.ini");

    Je passe ca au débug et j'ai les valeurs suivantes :


    dir = \192.168.0.40Logolab

    fichierIni = \192.168.0.40Logolab\bin\unfichier.ini
    RAAAaaaahhhhhhhhhhh!!!!

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Même dans le fichier properties, il faut échapper les caractères.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \\\\192.168.0.40\\MonRep

  7. #7
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Points : 730
    Points
    730
    Par défaut
    Ouaip ca marche nickel.


  8. #8
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Points : 730
    Points
    730
    Par défaut
    Rrraaahhhh!! LE RETOUR!

    En faite j'ai un problème sous linux je voudrais récupérer un chemin réseau samba (un partage réseau) du style smb://192.168.0.X/MonPartage

    Dans mon fichier properties j'ai cette entrée "smb://192.168.0.X/MonPartage"
    Mais quand je lie la variable je récupère :
    - smb:/192.168.0.X/MonPartage résultat dans le débug je ne fais pas de syso.

    Il me renvoie logiquement que ce n'est pas un chemin valide.

    J'ai testé en codant en dur le chemin en pensant que ca venait de la lecture du fichier mais apparemment c'est File qui ne veux pas des //

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File monFichierIni = new File("smb://192.168.0.X/MonPartage/bin/monfichier.ini");
    J'ai aussi essayé smb:////192.168.0.X sachant que smb:\/\/192.168.0.X il en veux pas.

    Je sais pas trop par quel bout m'y prendre.


  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Normal : là, ce n'est pas un fichier, c'est une ressource accessible via le protocole smb. Donc... utilisation de java.net.URL

  10. #10
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Points : 730
    Points
    730
    Par défaut
    Je suis d'accord mais ma ressource est un fichier donc je vois pas comment je peux faire pour a la fin avoir un fichier!!!

    mon but c'est de lire le contenu du fichier.

    J'ai testé ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    String separateur = java.io.File.separator;
     
    URI uri = null;
    		try {
    			URI dir = conn.getUrl();
    			URI rep = new URI(dir.toString()+separateur+"bin");
    			uri = new URI(rep.toString()+separateur+"monFichier.ini");
    		} catch (URISyntaxException e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
    		File monFichierIni = new File(uri);
    //avec uri = smb://192.168.0.X/monPartage/bin/monFichier.ini
    Mais ca ma renvoie l'erreur :

    java.lang.IllegalArgumentException: URI scheme is not "file"

    Concernant le fichier properties va falloir que je spécifie tout le temps un chemin réseau :
    Sous windows \\192.168.0.x\MonPartage
    Sous linux smb://192.168.0.X/MonPartage
    ??

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Tu ne peux pas récupérer l'URL en File au final. File est limité aux fichiers se trouvant logiquement sur ton ordinateur (et peut-être ceux accessibles).

    Pour lire le contenu, il suffit de faire URL.openConnection(); _ET_ d'avoir une bibliothèque permettant d'utiliser SMB.

    Une autre méthode consiste à monter une partition SMB comme extension du filesystem actuel. Dans ce cas, tu as simplement à appeler File vers ton nouveau point de montage. (et donc toucher à /etc/fstab, etc.)

    À toi de voir.

  12. #12
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Points : 730
    Points
    730
    Par défaut
    Merci pour la piste je suis en train d'explorer le truc mais j'ai un peux de mal...

    J'utilise les url avec jcifs... pour l'instant je galère avec l'erreur "unknown protocol smb"

    Si t'as un lien vers un tuto ou un truc facile à comprendre je suis preneur.


    Une autre méthode consiste à monter une partition SMB comme extension du filesystem actuel. Dans ce cas, tu as simplement à appeler File vers ton nouveau point de montage. (et donc toucher à /etc/fstab, etc.)
    J'ai une contrainte de portabilité faut que ca marche sous XP et j'ai pas encore fais mes tests sous Vista ...

    -------PAUSE CAFE-----------


    J'ai parlé trop vite je vais prendre cette solution si l'admin qui install le prog gère lui même le montage réseau il a juste à me spécifier la lettre du lecteur réseau ou le chemin sous linux et pour moi c'est du local... donc pas de problème de gestion de smb, de mot de passe de connexion de sécurité pour stocker ces infos bref la libération...




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

Discussions similaires

  1. Problème avec MetaFilenameFilter (slash dans des String)
    Par Sylver--- dans le forum Langage
    Réponses: 6
    Dernier message: 14/08/2007, 14h16
  2. probléme chemin d'application
    Par laaroussi1 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 02/05/2007, 22h56
  3. Problème chemins relatifs lors du déboguage
    Par jomeo dans le forum Visual C++
    Réponses: 5
    Dernier message: 03/04/2007, 16h04
  4. Formulaires : problème avec les slashes et les quotes
    Par GarGamel55 dans le forum Langage
    Réponses: 1
    Dernier message: 12/10/2005, 15h59
  5. Réponses: 1
    Dernier message: 01/03/2005, 21h36

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