Question conçernant la classe java.util.Scanner [Résolu]

Signaler
Messages postés
18
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
30 juillet 2009
-
Messages postés
18
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
30 juillet 2009
-
Bonjour, je développe une application et une de mes méthode doit servir a classer des fichiers dans un arborescence, et donc après un petit moment d'aprehension je me suis lancé et j'utilise donc un JTree, que je dois remplir a partir de Chaine de caractere representant le chemin d'accès a mon fichier, de type:
data\dossier1\dossier2\fichier.ext

et je veux utiliser la classe Scanner pour separer les différents "dossiers" pour les ajouter en tant que DefaultMutableTreeNode dans mon DefaultTreeModel, cependant j'ai quelque soucis avec le delimiter, voici le code:
---------------------------
//ma méthode prend un ArrayList<String> en argument nommé dbList
...
Iterator<String> dbListIt= dbList.iterator();
...
do{
            Scanner s= new Scanner(dbListIt.next());
            String delim = new String("\");
            s.useDelimiter(delim);
            DefaultMutableTreeNode parent= racineBases;
            while(s.hasNext()){
                DefaultMutableTreeNode x = new DefaultMutableTreeNode(s.next());
                parent.add(x);
                parent=x;
            }
            
        }while(dbListIt.hasNext());

-----------------------------------
les lignes en gras me posent probleme: en effet, de la façon dont c'est écrit, j'obtient une erreur :
-------------------------------------------
Exception in thread "main" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\
 ^
    at java.util.regex.Pattern.error(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.util.regex.Pattern.(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.util.Scanner$1.create(Unknown Source)
    at java.util.Scanner$1.create(Unknown Source)
    at sun.misc.LRUCache.forName(Unknown Source)
    at java.util.Scanner.useDelimiter(Unknown Source)
    at carlight.mb.test.MaJFrame.makeBasesTreeModel(MaJFrame.java:31)
    at carlight.mb.test.MaJFrame.main(MaJFrame.java:65)
-----------------------------------------
Et si j'essai d'autre forme d'écriture ( par exemple, \\\, ou \) Eclipse refuse de compiler.
J'ai fait des recherche sur internet mais rien de trés précis sur un Delimiter backslash, à croire que les chemins d'accès ils ne conaissent pas...

Si vous pouviez m'aider je vous en serait trés reconaissant, et mon stage aussi

-Le java, c'était plus facile en cours....-

3 réponses

Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
12
salut,

tu as essayé avec quatre ? ("\\\")
Messages postés
519
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
19 décembre 2016
23
Salut,

T'as vraiment pas de chance, il suffit d'en mettre 4, lol.
Pour java, "\" est une chaîne de caractères contenant un seul caractère : antislash.
Donc quand il compile la regex, il comprend que c'est le caractère d'échappement ""
Messages postés
18
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
30 juillet 2009

aahhhh bin oui, d'accord....donc et donc en fait le séparateut du chemin d'accès n'est pas "" mais "\" et donc il faut le doubler 2 fois...c'est ça?
Merci de votre aide!

-Le java, c'était plus facile en cours....-