Bonjour.
Une question, svp. Mon applic reçoit différents fichiers texte au format csv étant caractérisés par:
- Lignes de longueur variable (20 à 23 caractères, y compris le '\n' invisible de fin de ligne).
Essentiellement des valeurs décimales.
- De ± 15.000 à ± 35.000 lignes
- Chaque ligne comprend 2 champs terminés par ';'
- Se terminant par 'EOF' (-1).
La finalité est de remplir une table apparaissant dans un GUI Swing.
1) Je voudrais savoir quelles instructions Java employer ...
- pour lire les fichiers (± 807.000octets) par bouts de chaînes de caractères de longueur variable, c à d s'arrêtant chaque fois au '\n' (20 à 23 car.)
- pour si possible mettre chaque nouvelle chaîne lue dans le tampon de caractères consécutif d'une ByteBuffer[]. Cette Array serait initialement implémentée à [15.000][23], et serait aggrandie dynamiquement (malloc()) par groupes de 10 tampons (de 23 octets) au besoin.
Je viens d'étudier les classes 'File', 'FileInputStream', 'FileChannel', ... et fonctions
'canalFichier.read(ByteBuffer[] tamponsLect, int offset, int longueur) ... mais elles ne me permettent pas de réaliser une lecture pas groupe de caractères de longueur variable, il me semble.
Existerait-il une fonction 'read(...)' effectuant un 'parsing' de deux caractères
- '-1' pour la fin du fichier
- mais aussi un caractère au choix : '\n' dans mon cas ... très général, il me semble.
2) A présent, j'ai programmé un algoritme de lecture par tampons de 23 octets fixes de longueur. A l'aide de
System.out.println(((ByteBuffer)(tamponLect.flip())).asCharBuffer().toString());
, je vois apparaître les caractères dans la fenêtre 'Output' de mon IDE NetBeans. Il n'apparaît que des symboles japonais ou chinois. Que faire pour obtenir les caractères ASCII ?
Merci d'avance pour votre aide.
Utile pour beaucoup d'entre nous, pas vrai ?
Partager