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 d'espace dans un chemin


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Par défaut Problème d'espace dans un chemin
    Bonjour à tous,
    fraichement débarqué dans le monde java, j'ai un peu de mal sur certain point.

    Je voudrais ouvrir un fichier qui se trouve dans le même repertoire que mes classes.
    J'ai donc trouvé ce topic qui répond partiellement à mon problème
    http://www.developpez.net/forums/sho...hlight=getpath

    J'ai donc fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String toto = new File(ClassLoader.getSystemResource("").getPath()).getAbsolutePath();
    System.out.println(toto);
    Ce qui me donne à l'affichage quelque chose comme :
    D:\repertoire%20avec%20espace\Appli\Monappli\build\classes

    Le problème est que lorsque je me sert de ce chemin pour ouvrir un fichier j'ai une erreur :
    D:\repertoire%20avec%20espace\Appli\Monappli\build\classes\monfichier.xml (file name) doesn't found!

    Je voudrais donc virer les %20 pour les remplacer par un espace.
    J'ai penser faire un replace, mais ça ne fonctionne pas :
    toto.replace("%20",' ');
    Quelqu'un pourrait il me dire où est mon erreur ?
    Ou sinon est ce que quelqu'un à une autre solution à me proposer ?

    Merci
    It isn't that they can't see the solution, it's that they can't see the problem.
    Mes Articles et Traductions (Microstrategy, Css et Javascript)
    Si vous souhaitez contribuer à la rubrique BI, contactez-moi ou tout autre membre de l'équipe BI par MP.

  2. #2
    Membre expérimenté
    Inscrit en
    Juin 2003
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 292
    Par défaut
    essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    toto.replace("\%20"," ");

  3. #3
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Par défaut
    merci de ta réponse jhaythem,
    cela dit, ça n'a pas l'air de marcher --> illegal escape character

    Je continue à chercher...
    It isn't that they can't see the solution, it's that they can't see the problem.
    Mes Articles et Traductions (Microstrategy, Css et Javascript)
    Si vous souhaitez contribuer à la rubrique BI, contactez-moi ou tout autre membre de l'équipe BI par MP.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Par défaut
    essaye
    replaceall
    ou
    while (il reste des espaces) replace

    suivant si tu est en 1.5 ou 1.4

  5. #5
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Par défaut
    voila a ta place ce que je ferais juste pour tester j essayerais avec un \ un \\ et un \\\\ ouai c est louche mais c est comme ca. je crois que ca va dependre de ta jvm et aussi de ton os.
    J'ai déjà testé merci

    Mais grâce à vous j'ai la solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     String toto = new File(ClassLoader.getSystemResource("").getPath()).getAbsolutePath();
    toto = toto.replaceAll("%20"," ");
    System.out.println(toto);
    je comprend pas trop pourquoi il faut affecter toto à lui même, mais ça marche

    Encore une fois merci à vous deux
    It isn't that they can't see the solution, it's that they can't see the problem.
    Mes Articles et Traductions (Microstrategy, Css et Javascript)
    Si vous souhaitez contribuer à la rubrique BI, contactez-moi ou tout autre membre de l'équipe BI par MP.

  6. #6
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Citation Envoyé par kalyparker Voir le message

    je comprend pas trop pourquoi il faut affecter toto à lui même, mais ça marche

    Encore une fois merci à vous deux
    C'est parce que la classe String est dite inaltérable c'est à dire qu'il n'est pas possible de modifier une instance de la classe String une fois que celle-ci a été créée, chaque opération créer une nouvelle instance que tu dois affecter à ta variable pour en sauvegarder le résultat.

    Pour illustrer ça avec un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    String s = "toto";
    s.toUpperCase();
    System.out.println(s); // affiche toto
    Là je fais simplement appel à la méthode toUppercase cependant comme la classe String est inaltérable la valeur de s n'est pas modifiée.

    Maintenant si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    String s = "toto";
    s = s.toUpperCase();
    System.out.println(s); // affiche TOTO
    Dans ce cas la valeur de s a changé car on a lui affecté le résultat de la méthode toUpperCase (qui renvoie une nouvelle instance correspond à la valeur de s mise en majuscule).

    J'espère que je suis clair dans mes explications.

    En java, beaucoup de classes sont inaltérables (String, les classes Wrapper du style Integer, Character, Long etc...), ça offre plusieurs avantages notamment la possibilité de partager leur instances sans besoin de synchronisation entre plusieurs threads.

  7. #7
    Membre expérimenté
    Inscrit en
    Juin 2003
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 292
    Par défaut
    ok desole, c etait juste un guess rapide, je croyais que le % etait interprete comme un metacaracheter.
    voila a ta place ce que je ferais juste pour tester j essayerais avec un \ un \\ et un \\\\ ouai c est louche mais c est comme ca. je crois que ca va dependre de ta jvm et aussi de ton os.
    bonne chance et je si je trouve d autres trucs je te ferais savoir...

  8. #8
    Membre expérimenté
    Inscrit en
    Juin 2003
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 292
    Par défaut
    je viens de tester sur 1.5 et ca marche parfaitement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    chaine.replaceAll("\\%20", " ");

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Par défaut
    Citation Envoyé par jhaythem Voir le message
    je viens de tester sur 1.5 et ca marche parfaitement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    chaine.replaceAll("\\%20", " ");
    ça ça remplace \%20 par espace

  10. #10
    Membre expérimenté
    Inscrit en
    Juin 2003
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 292
    Par défaut
    Citation Envoyé par XSeb74 Voir le message
    ça ça remplace \%20 par espace
    non ca ca remplace %20 par un espace, donc mon guess etait correct la premiere fois le % est un methacharacter.

    tu peux toujours tester ma reponse si tu ne me crois pas

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 08/07/2011, 23h23
  2. Problème d'espace dans le chemin d'accès d'une vidéo avec VLC
    Par Krovax dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/08/2009, 13h56
  3. Problème d'espaces dans les chemins avec Cygwin
    Par destructive dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 14/04/2008, 18h48
  4. [VBS] Gestion des espaces dans le chemin de fichiers
    Par Edoxituz dans le forum VBScript
    Réponses: 4
    Dernier message: 23/02/2006, 17h41
  5. [DOS] Espace dans le chemin et lancement de fichier
    Par nahzhir dans le forum Scripts/Batch
    Réponses: 16
    Dernier message: 20/02/2006, 10h27

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