Script pour fichier texte en java

triceratops -  
 danimo -
Bonjour,

Ja, un fichier ou il y a plus de 20000 lignes, chaque ligne represente un chemin d'acces comme ceci:
U:\www\architecture\diagrammes\Applications\BOS\MIA\index_fichiers\maximize.gif.txt
Comment faire pour dire a java d'enlever l'arborescence et de ne laisser que le nom du fichier. Ce qui avec la ligne présenté plus haut donnerait maximize.gif.txt

4 réponses

  1. danimo
     
    Salut,

    Tu vas avoir des "illegal escape character" lors de la compile, il faudrait doubler les "\\"

    Mais voici ce que tu pourais faire si le nom du fichier est toujours en fin de ligne:

    String ligne= "U:\\www\\architecture\\diagrammes\\Applications\\BOS\\MIA\\index_fichiers\\maximize.gif.txt";
             
                String nomFic = "";
             
                int index = ligne.lastIndexOf("\\");
                if(index == -1)
                   System.out.println("Pas de \\");
                else
                   nomFic = ligne.substring(index +1);
                System.out.println("Nom du fichier = " + nomFic);
    

    Cordialement,

    Dan
    0
  2. triceratops
     
    salut danimo, d'abord merci, ensuite comment faire pour lui dire de lire le fichier ligne par ligne et puis de les traiter tous ?
    0
    1. Thyjukil Messages postés 48 Statut Membre 4
       
      Bonjour, pour lire un fichier ligne par ligne tu peux utiliser la classe BufferedReader.
      BufferedReader br = new BufferedReader(new FileReader(new File("tonFichier")));
      
      String line = br.readLine();
      while (line != null)   // readLine renvoie la valeur null lorsque la fin de fichier est atteinte
      {
                /* Ton traitement */
                line = br.readLine();
      }
      
      br.close();  
      0
    2. triceratops
       
      oK et pour sauvergarder dans un fichier ? Excusez du niveau de questions mais je suis vraiment bete.
      0
    3. triceratops
       
      Voici mon code
      public class texte {




      public static void main(String[] args) throws IOException {
      BufferedReader br = new BufferedReader(new FileReader(new File("ihssendalloul")));

      String line = br.readLine();
      while (line != null) // readLine renvoie la valeur null lorsque la fin de fichier est atteinte
      {
      /* Ton traitement */
      int index = line.lastIndexOf("\\");
      String nomFic = "";
      line = br.readLine();
      nomFic = line.substring(index +1);
      System.out.println(nomFic);

      }

      br.close();

      }

      }

      Ca marche pour quelaues lignes et puis ca me donne ca
      Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -8
      at java.lang.String.substring(Unknown Source)
      at java.lang.String.substring(Unknown Source)
      at texte.main(texte.java:33)
      0
  3. danimo
     
    Salut,

    L'erreur que tu signales semble ne pas correspondre au code que tu donnes ou alors c'est un extrait...

    Peux-tu me donner la liste EXACTE de QUELQUES lignes (surtout pas 20000) pour que je puisse tester en réel.

    Autre chose, c'est quoi ce fichier ihssendalloul ? un fichier texte ?

    À essayer car tu ne lis pas d'autre ligne dans la boucle while:

    public static void main(String[] args) throws IOException {  
             //BufferedReader br = new BufferedReader(new FileReader(new File("ihssendalloul"))); 
             BufferedReader br = new BufferedReader(new FileReader("ihssendalloul")); 
           
             //String line = br.readLine();  
             String line;  
             while ((line = br.readLine()) != null) 
             //while (line != null) // readLine renvoie la valeur null lorsque la fin de fichier est atteinte  
             {  
             /* Ton traitement */  
                int index = line.lastIndexOf("\\");  
                String nomFic = "";  
                line = br.readLine();  
                nomFic = line.substring(index +1);  
                System.out.println(nomFic);  
              
             }  
           
             br.close();  
           
          } 
    


    Cordialement,

    Dan
    Plus on apprend... plus on se rend compte qu'on ne connaît pas grand-chose.
    0
  4. danimo
     
    Re,

    Désolé, je n'avais pas vu la ligne line = br.readLine(); dans la boucle; il faut la supprimer la lecture se faisant dans while ((line = br.readLine()) != null)

    /* Ton traitement */  
                int index = line.lastIndexOf("\\");  
                String nomFic = "";  
               // line = br.readLine();  // <<<<<<<< SUPPRIMER
                nomFic = line.substring(index +1);  
                System.out.println(nomFic);
    0