Question conçernant la classe java.util.Scanner

Résolu
Hyperpenguin Messages postés 16 Date d'inscription mercredi 23 avril 2008 Statut Membre Dernière intervention 30 juillet 2009 - 30 mai 2008 à 15:52
Hyperpenguin Messages postés 16 Date d'inscription mercredi 23 avril 2008 Statut Membre Dernière intervention 30 juillet 2009 - 2 juin 2008 à 09:02
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

cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
30 mai 2008 à 16:13
salut,

tu as essayé avec quatre ? ("\\\")
3
cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 25
30 mai 2008 à 16:15
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 ""
3
Hyperpenguin Messages postés 16 Date d'inscription mercredi 23 avril 2008 Statut Membre Dernière intervention 30 juillet 2009
2 juin 2008 à 09:02
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....-
0
Rejoignez-nous