[Java] lecture particulière d'un fichier ...

Fermé
boco Messages postés 3 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 18 avril 2005 - 18 avril 2005 à 12:30
Pool Orion Messages postés 124 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 15 juin 2007 - 19 avril 2005 à 13:37
Bonjour,

J'ai un serieux soucis qui me retarde dans la réaliation de mon projet:

Au départ, je lis simplement un fichier à partir duquel je dois récupèrer les lignes et les stocker dans un vecteur.
Voici la petite partie de code correspondante:

FileInputStream FIS=new FileInputStream(new File(nomRepertoire()+nomFichier()));
BufferedReader BF=new BufferedReader(new FileReader(nomRepertoire()+nomFichier()), FIS.available());
String ligne;
Vector v=new Vector();
while(true)
{

ligne="";
ligne=BF.readLine();

if (ligne==null)
break;
v.addElement(ligne);
}


Readline détermine la fin d’une ligne par la présence dans le fichier du caractère /n ou /r ( l'usage du slash est volontaire).
Or /r ne correspond pas dans mon cas, en considérant le sens du fichier à traiter, à un caractère de fin de ligne.
Je me retrouve donc avec un nombre de ligne erroné, à cause de la prise en compte de /r par readline.

Malheureusement, la solution consistant en la lecture caractère par caractère du fichier en vue de considérer de manière différente le /n (fin d'une ligne, ajout de la ligne dans le vecteur) et le /r (simple caractère) est trop lourde, vu la taille des lignes, et je ne peux pas l'utiliser.

Je cherche désespérement un moyen plus effcicace.
A bon entendeur...
Et merci d'avance pour les réponses!

Boco
A voir également:

2 réponses

Bonjour,

tu dit :
"Malheureusement, la solution consistant en la lecture caractère par caractère du fichier en vue de considérer de manière différente le /n (fin d'une ligne, ajout de la ligne dans le vecteur) et le /r (simple caractère) est trop lourde, vu la taille des lignes, et je ne peux pas l'utiliser."

A ton avis, la méthode readline fait quoi ?
-1
boco Messages postés 3 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 18 avril 2005
18 avril 2005 à 15:18
Pour améliorer les performances des flux sur un fichier, la mise en tampon des données lues ou écrites permet de traiter un ensemble de caractères représentant une ligne plutôt que de traiter les données caractères par caractères. Le nombre d'opérations est ainsi réduit.
Je n'en profite pas si j'utilise read au lieu de readLine, non?!
0
Pool Orion Messages postés 124 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 15 juin 2007 55
19 avril 2005 à 13:37
Salut,

Ok pour la lecture caractère par caractère, mais ne peux tu pas lire ligne par ligne (ou du moins ce que la méthode readLine considére comme une ligne) et ensuite tester s'il est nécessaire de concaténer la dernière ligne lue avec la dernière gardée en mémoire avant l'insertion dans ton vecteur?

-1