OVH Cloud OVH Cloud

Lire un fichier texte

2 réponses
Avatar
Pierre Maurette
Bonjour,

C'est ma première apparition sur ce forum, salut à tous.

Le contexte : je bricole sur des OpenTools Borland (en Java)
applicables à l'IDE C++BuilderX, j'utilise JBuilder 9 pour développer
à partir d'exemples de la doc.
Je suis zobi en Java, et je ne pense pas me lancer dans un
apprentissage complet dans les mois qui viennent. Sinon, je n'oserais
pas poser les questions qui suivent.
Pour info, les IDE JBuilder et C++BuilderX sont des descendants (ou
des spécialisations) d'un même IDE de base (primetime).
Malheureusememnt, les classes propres à C++BuilderX ne sont pas
documentées à l'heure actuelle, mais on s'en sort puisqu'on peut avoir
un peu au hasard leur interface, et parier sur le parallélisme avec
leur équivalent JBuilder.
Le boulot actuel porte sur la gestion de fichiers .asm par l'IDE, et
précisément ici sur la coloration syntaxique.

J'ai ça qui fonctionne bien :
<code>
static {
String[] keywords = getKeywords();
keywordMap = new HashMap(keywords.length * 2 + 1);
maxKeywordLength = initMap(keywordMap, keywords, caseSensitive);
...
public static String[] getKeywords() {
return new String[] {
"and", "mov", "rdtsc", "cmpx",
...
"xor",
};
}
</code>
Je voudrais que getKeywords() lise dans un fichier faisable à la main,
du genre:
<fichier.txt>
and
mov
rdtsc
cmpx
...
xor
</fichier.txt>
C'est ce que me fait par exemple la VCL de Delphi/C++Builder par
TStringList::LoadFromFile().
Les solutions de sérialization/désérialisation seraient tentantes,
mais je n'ai aucune raison (au contraire) de faire créer le fichier
par un programme Java.
J'ai l'impression que je pars sur des trucs un peu compliqués, et que
la solution toute simple existe, si je trouve la bonne classe.
Accessoiremen, ce serait si je pouvais faire un truc du genre (pseudo
langage) :
Charger TroncCommun.txt
Si condition1
Appender Supplément1.txt
Si condition2
Appender Supplément2.txt
...
Si conditionN
Appender SupplémentN.txt

Pourriez-vous m'aider à trouver la bonne voie de recherche?

Par avance merci

Pierre

2 réponses

Avatar
Michel B.
La classe FileReader du package java.io semble correspondre aux donnees du
probleme.
Et avec un buffer c encore mieux :

FileReader fr = new FileReader("fichier");
BufferedReader br = new BufferedReader(fr);
String s;
while ((s = br.readLine()) != null) {
// traitement a effectuer ...
}



"Pierre Maurette" a écrit dans le message
news:
Bonjour,

C'est ma première apparition sur ce forum, salut à tous.

Le contexte : je bricole sur des OpenTools Borland (en Java)
applicables à l'IDE C++BuilderX, j'utilise JBuilder 9 pour développer
à partir d'exemples de la doc.
Je suis zobi en Java, et je ne pense pas me lancer dans un
apprentissage complet dans les mois qui viennent. Sinon, je n'oserais
pas poser les questions qui suivent.
Pour info, les IDE JBuilder et C++BuilderX sont des descendants (ou
des spécialisations) d'un même IDE de base (primetime).
Malheureusememnt, les classes propres à C++BuilderX ne sont pas
documentées à l'heure actuelle, mais on s'en sort puisqu'on peut avoir
un peu au hasard leur interface, et parier sur le parallélisme avec
leur équivalent JBuilder.
Le boulot actuel porte sur la gestion de fichiers .asm par l'IDE, et
précisément ici sur la coloration syntaxique.

J'ai ça qui fonctionne bien :
<code>
static {
String[] keywords = getKeywords();
keywordMap = new HashMap(keywords.length * 2 + 1);
maxKeywordLength = initMap(keywordMap, keywords, caseSensitive);
...
public static String[] getKeywords() {
return new String[] {
"and", "mov", "rdtsc", "cmpx",
...
"xor",
};
}
</code>
Je voudrais que getKeywords() lise dans un fichier faisable à la main,
du genre:
<fichier.txt>
and
mov
rdtsc
cmpx
...
xor
</fichier.txt>
C'est ce que me fait par exemple la VCL de Delphi/C++Builder par
TStringList::LoadFromFile().
Les solutions de sérialization/désérialisation seraient tentantes,
mais je n'ai aucune raison (au contraire) de faire créer le fichier
par un programme Java.
J'ai l'impression que je pars sur des trucs un peu compliqués, et que
la solution toute simple existe, si je trouve la bonne classe.
Accessoiremen, ce serait si je pouvais faire un truc du genre (pseudo
langage) :
Charger TroncCommun.txt
Si condition1
Appender Supplément1.txt
Si condition2
Appender Supplément2.txt
...
Si conditionN
Appender SupplémentN.txt

Pourriez-vous m'aider à trouver la bonne voie de recherche?

Par avance merci

Pierre


Avatar
Pierre Maurette
"Michel B." typa:

La classe FileReader du package java.io semble correspondre aux donnees du
probleme.
Et avec un buffer c encore mieux :

FileReader fr = new FileReader("fichier");
BufferedReader br = new BufferedReader(fr);
String s;
while ((s = br.readLine()) != null) {
// traitement a effectuer ...
}
Merci beaucoup, ça doit le faire sans trop de tuyauterie.

Il me faut améliorer ma pratique de la documention (j'utilise pour le
langage l'aide en ligne de JBuilder).
BufferedReader, et par là même readLine(), m'avaient échappé.
Il me reste à coder et à tester le comportement sur des fichiers
d'entrée "bizarres". Mais normalement, ces fichiers sont faits par
moi.
Mon OpenTool est un JAR dans un répertoire particulier, ce qui ne
facilite pas les tests. Il me faut creuser l'idée de mettre les
fichiers textes dans le JAR (j'ai vérifié, je peux utiliser WinRar
pour par exemple les éditer).
--
Bon ouikende,

Pierre