Problème de lecture de fichier avec java

Problème de lecture de fichier avec java - Java - Programmation

Marsh Posté le 18-03-2004 à 08:36:22    

J'aimerai parcourir un fichier texte ligne par ligne et pour chaque ligne  
mot par mot afin d'isoler certaines informations pour les inclures dans une  
base de données. J'ai fait des recherches mais je ne trouve pas la bonne  
méthodes pour parcourir mon fichier.
 
 
Extrait de fichier :
 
 SCHEDULE BCA5000#STEST3
         ON      10/29/03, 10/30/03
 
         AT      1415
:
   BCA5000#JOB_DIR
END
 
 
SCHEDULE FORMATIO#S1CPT1
         ON      CFACT1
 
         AT      1500
         LIMIT   1
         PROMPT  M1OKCPT
:
   FORMATIO#J1CPT11
   FORMATIO#J1CPT12
         OPENS   TECH#"/opt/maestro8/maestro/ares/fic_cal"
         FOLLOWS J1CPT11
   FORMATIO#J1CPT13
         FOLLOWS J1CPT12
END
 
 
 
Par exemple dans ce fichier, je dois isoler le nom de la schedule situé après  
le mot clé SCHEDULE, le nom du cpu après le #.  Et récupérer différentes  
informations caractérisé par les mots cles AT, ON, LIMIT,....
 
J'aimerai avoir vos conseils et savoir quelle méthode permet de parcourir le  
fichier ligne par ligne.
Merci d'avance

Reply

Marsh Posté le 18-03-2004 à 08:36:22   

Reply

Marsh Posté le 18-03-2004 à 08:38:53    

Bin faut voir du côté de java.io.FileReader. Essaie de construire un BufferedReader à partir de ça ; après c'est du readLine() et hop.

Reply

Marsh Posté le 18-03-2004 à 08:48:13    

OK je vais essayer. J'étais parti avec une lecture par StreamTokenizer mais je n'arrive pas à parcourir toutes les données et je ne peux pas passer les lignes qui ne m'intéresse pas.
 
Merci pour tout

Reply

Marsh Posté le 15-04-2004 à 16:29:29    

Vu que ton truc ressemble à un langage, tu devrais peut-être
penser à écrire un parser avec JavaCC ou antlr ou autre.

Reply

Marsh Posté le 15-04-2004 à 16:32:17    

qu'est ce qu'un parser et comment ca fonctionne?
 

Reply

Marsh Posté le 15-04-2004 à 17:02:41    

lapartdombre a écrit :

qu'est ce qu'un parser et comment ca fonctionne?
 
 


 
La base c'est de définir la grammaire de ton langage et de la donner à manger à un outil qui te pond un parser et un analyseur syntaxique adapté à ton langage.
 
Le rôle du parser est de produire une suite de jetons avec leur type. Un jeton est un mot-clé de ton langage ou une variable ou un nombre ou tout autre chose que tu as défini dans la grammaire.
 
Le rôle de l'analyseur syntaxique est de prendre les jetons fournis par le parseur et de s'assurer qu'il se apparaissent de manière cohérente par rapport à la la grammaire. Pour comparer avec le langage humain, le parser traite les mots et l'analyseur syntaxique les phrases.
 
Au final tu obtiens un arbre syntaxique (AST: Abstract Syntaxic Tree) qui est une hiérarchie d'objets représentant ton code source.
 
là tu peux tranquilement parcourir cet arbre pour extraire ce que tu veux.
 
Une grammaire c'est pas un truc forcément facile à écrire et ça peut te paraître lourd pour ce que tu veux faire mais aujourd'hui tu as besoin de sortir certaines infos de tes fichiers et demain ça sera autre chose en plus.
Si tu commences par des readLine() et des StringTokenizer ça sera pas très évolutif compte tenu de l'apparente complexité de tes fichiers

Reply

Marsh Posté le 23-03-2005 à 15:27:50    

le parser est plutot l'analyseur syntaxique!
Ce que tu definie comme parser est l'analyseur lexicale!
En tout cas c'est ce que je crois:)
 

Reply

Marsh Posté le 15-07-2005 à 17:07:27    

megabuck2 a écrit :

le parser est plutot l'analyseur syntaxique!
Ce que tu definie comme parser est l'analyseur lexicale!
En tout cas c'est ce que je crois:)


 
Nan nan : un parser standard analyse un fichier lexicalement (le fichier ne devra comporter uniquement des lexème reconnus : pas de "zqwtxyzw" ) et sémantiquement (syntaxe correcte: les lexèmes ne peuvent pas être placés n'importe comment).
 
Mais pour un problème comme ça, coder un parser c'est un peu enfoncer un clou avec un superTanker :) Ca marche du tonnerre mais y'a plus simple (en fouillant des les I/O de java).

Reply

Sujets relatifs:

Leave a Replay

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