[JAVA] Spliter un chemin de fichier ?

Spliter un chemin de fichier ? [JAVA] - Java - Programmation

Marsh Posté le 24-01-2005 à 11:40:40    


Bonjour, quelle est le meilleur moyen pour parser, spliter un chemin de fichier et récupérer les repertoires du chemin? le tout en JAVA
 
moi j'ai produit le code suivant qui ne fonctionne pas ;-), le split ne fonctionne pas, le String[] ne contien qu'un String
 
 

Code :
  1. /**   
  2. * @author Olivier Glorieux   
  3. *   
  4. * Cette méthode permet de vérifier que le chemin passé en paramètre
  5. * ne contient pas un repertoire d'erreur
  6. */   
  7.     public static boolean estUnRepertoireErreur(File repATester) {
  8.    
  9.      boolean result = false ;
  10.      String[] morceaux = null ;
  11.      String StringRepATester = repATester.toString() ;
  12.      System.out.println("StringRepATester " + StringRepATester) ;
  13.      morceaux = StringRepATester.split(File.pathSeparator) ;
  14.      // pour chaque repertoire du chemin, vérifier s'il ne s'agit pas
  15.      // d'un repertoire d'erreur
  16.      for(int i = 0 ; i < morceaux.length ; i++) {
  17.       System.out.println("rep " + morceaux[i] + morceaux.length) ;
  18.       if(morceaux[i].equals(CHEMIN_ERREUR_1) || morceaux[i].equals(CHEMIN_ERREUR_2)
  19.       || morceaux[i].equals(CHEMIN_ERREUR_3) || morceaux[i].equals(CHEMIN_ERREUR_4)
  20.       || morceaux[i].equals(CHEMIN_ERREUR_5)){
  21.        result = true ;
  22.       }
  23.      }
  24.    
  25.      return result ;
  26.     }

Reply

Marsh Posté le 24-01-2005 à 11:40:40   

Reply

Marsh Posté le 24-01-2005 à 14:22:45    

surement parce que '\' est un caractère spéciale dans la syntaxe des regexp ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 24-01-2005 à 14:50:25    

Il y aurait d'autres façons de procéder
 
- StringTokenizer (mais en fait, tu retomberais sur le même pb)
- méthode getParent() de la classe File (tu remonte jusqu'à la racine en testant tous les répertoires parent)
- méthode indexOf

Code :
  1. if (StringRepATester.indexOf(CHEMIN_ERREUR_1) != -1) {
  2.   return true;
  3. }

Reply

Marsh Posté le 24-01-2005 à 17:14:40    

bidem a écrit :

Il y aurait d'autres façons de procéder
 
- StringTokenizer (mais en fait, tu retomberais sur le même pb)
- méthode getParent() de la classe File (tu remonte jusqu'à la racine en testant tous les répertoires parent)
- méthode indexOf

Code :
  1. if (StringRepATester.indexOf(CHEMIN_ERREUR_1) != -1) {
  2.   return true;
  3. }



 
Utiliser les expression régulières (incluses au JDK depuis le 1.4).
Je suis pas un pro de ça mais tu peux créer une expression régulière qui te récupère tout ce dont tu as besoin (lettre de lecteur, répertoires du chemin, nom du fichier et extension).

Reply

Marsh Posté le 24-01-2005 à 17:19:01    

ouais mais ce sera pas portable ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 24-01-2005 à 17:50:07    

un pathSeparator c'est pas "\\" ou "/", c'est ":" ou ";"  
  /**
     * The system-dependent path-separator character.  This field is
     * initialized to contain the first character of the value of the system
     * property <code>path.separator</code>.  This character is used to
     * separate filenames in a sequence of files given as a <em>path list</em>.
     * On UNIX systems, this character is <code>':'</code>; on Microsoft Windows systems it
     * is <code>';'</code>.
     *
     * @see     java.lang.System#getProperty(java.lang.String)
     */
    public static final char pathSeparatorChar = fs.getPathSeparator();
 
    /**
     * The system-dependent path-separator character, represented as a string
     * for convenience.  This string contains a single character, namely
     * <code>{@link #pathSeparatorChar}</code>.
     */
    public static final String pathSeparator = "" + pathSeparatorChar;

Reply

Marsh Posté le 24-01-2005 à 18:19:01    

effectivement, j'ai confondu avec fileSeparator :/


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed