[ java / regexp ] parser un fichier texte.

parser un fichier texte. [ java / regexp ] - Java - Programmation

Marsh Posté le 18-04-2002 à 16:35:26    

salut,
 
je dois nettoyer un fichier texte de séquences listées.
 
dans le JDK1.4, on trouve la classe java.util.regex qui permet d'utiliser les regexp. soit.
 
ça marche bien pour les String et StringBuffer mais... mon fichier texte ne rentre pas dans un StringBuffer... et là je suis en train de me mélanger les pinceaux dans les BufferReader à partir de File, ... et donc là... je suis perdu.
 
comment puis-je faire pour passer d'un File à un StringBuffer sachant que je ne peux pas découper ce fichier en tronçons de 1024 char par exemples...
 
(histoire: fichier xhtml pourri généré par word2000, j'ai fait une petite liste des choses pas jolies à retirer et donc, je ne peux me permettre de découper des tags par erreur via la création successives de buffers de 1024...)
 
z'avez une idée pour avoir accès à un flat file en continu ?


---------------
As the plane took off, the pilot turned to the co-pilot and said, “Have you ever flown solo?” Co-pilot: No. Typically I fly much higher than this.
Reply

Marsh Posté le 18-04-2002 à 16:35:26   

Reply

Marsh Posté le 18-04-2002 à 16:44:13    

pq tu dis que ton fichier texte ne rentre pas dans ton stringbuffer ?
 
pour info
 

Code :
  1. /**
  2. * Loads the root file in a String representation. This is done before parsing
  3. * the file for absolute or external references.
  4. */
  5. private void loadRootFile() {
  6. try {
  7.    File f = ...
  8.    BufferedInputStream in = new BufferedInputStream(new 
  9.    FileInputStream(f));
  10.    StringWriter out = new StringWriter();
  11.    int b;
  12.    while ((b=in.read()) != -1)
  13.       out.write(b);
  14.    out.flush();
  15.    out.close();
  16.    in.close();
  17.    s = out.toString();
  18. }
  19. catch (IOException ie)
  20.  {
  21.  //  }
  22.     }

 

[jfdsdjhfuetppo]--Message édité par DarkLord--[/jfdsdjhfuetppo]


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 18-04-2002 à 16:57:38    

:heink:  
 
je potasse et je reviens... il y a un truc que je ne saisis pas avec les Stream mais je ne sais pas quoi... donc attends toi à une question ;)
 
merci pour le coup de pouce.


---------------
As the plane took off, the pilot turned to the co-pilot and said, “Have you ever flown solo?” Co-pilot: No. Typically I fly much higher than this.
Reply

Marsh Posté le 18-04-2002 à 17:00:52    

on peut changer la méthode qui est pas efficace du tout puisqu'elle lit byte par byte ... Mais bon ca on peut changer après
 
C'est des fichiers de quelle taille?


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 18-04-2002 à 17:24:08    

ça varie... ce sont des docs de Word de taille libre -> comme on doit virer pas mal de blabla ils ont assez gros... mais je n'ai pas de taille précise. ça peut aller jusqu'à 1 ou 2 Mb...
à mon avis pas plus...
 
là où je suis étonné par ta réponse c'est qu'on m'a toujours dit que les String et StringBuffer étaient limités en taille... et comme mon prog ne peut être limité à cause de la taille d'un fichier...

 

[jfdsdjhfuetppo]--Message édité par TBone--[/jfdsdjhfuetppo]


---------------
As the plane took off, the pilot turned to the co-pilot and said, “Have you ever flown solo?” Co-pilot: No. Typically I fly much higher than this.
Reply

Marsh Posté le 18-04-2002 à 17:27:29    

TBone a écrit a écrit :

là où je suis étonné par ta réponse c'est qu'on m'a toujours dit que les String et StringBuffer étaient limités en taille...



 
 :non:  
 
Absolument pas. Tu es limité physiquement par la mémoire RAM disponible, c'est tout. Je vais meme te donner une chouette méthode qui permet de remplacer A par B dans une String
 

Code :
  1. /**
  2.      * Replace all occurrences of oldToken in s with newToken, or only the first occurrence if fAll is false. <br>
  3.      * replace("aaaa", "aa", "bbb", false) returns "bbbaa"<br> replace("aaaa", "aa", "bbb", true) returns "bbbbbb"
  4.      */
  5.     public static String replace(String s, String oldToken, String newToken, boolean fAll) {
  6.         if ((s == null) || (oldToken == null) || (newToken == null)) {
  7.             throw new IllegalArgumentException("Null argument(s) seen" );
  8.         }
  9.         int oldTokenLen = oldToken.length();
  10.         StringBuffer sb = null;
  11.         int oldPos = 0;
  12.         int pos = s.indexOf(oldToken, oldPos);
  13.         if (oldPos > -1) {
  14.             sb = new StringBuffer(s.length());
  15.         }
  16.         for (; pos > -1; pos = s.indexOf(oldToken, oldPos)) {
  17.             sb.append(s.substring(oldPos, pos));
  18.             sb.append(newToken);
  19.             oldPos = pos + oldTokenLen;
  20.             if (!fAll) {
  21.                 break;
  22.             }
  23.         }
  24.         return ((oldPos > 0) ? sb.append(s.substring(oldPos)).toString() : s);
  25.     }


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 18-04-2002 à 17:52:44    

je regarde ça de suite et après @home !
 
merci bcp! :jap:


---------------
As the plane took off, the pilot turned to the co-pilot and said, “Have you ever flown solo?” Co-pilot: No. Typically I fly much higher than this.
Reply

Marsh Posté le 19-04-2002 à 09:17:40    

ça commence à fonctionner.
j'ai une boulette à réparer mais ça tourne plus ou moins rond.
 
merci du coup de pouce!
 
(les sources exemples viennent d'où ? de chez Sun ?)


---------------
As the plane took off, the pilot turned to the co-pilot and said, “Have you ever flown solo?” Co-pilot: No. Typically I fly much higher than this.
Reply

Marsh Posté le 19-04-2002 à 09:33:24    

TBone a écrit a écrit :

(les sources exemples viennent d'où ? de chez Sun ?)  




 
moi mais des tas d'autres gens ont déjà du faire des choses similaires (et donc chez SUN aussi :D )

 

[jfdsdjhfuetppo]--Message édité par DarkLord--[/jfdsdjhfuetppo]


---------------
Just because you feel good does not make you right
Reply

Sujets relatifs:

Leave a Replay

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