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

boco Messages postés 3 Statut Membre -  
Pool Orion Messages postés 124 Statut Membre -
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

Visiteur
 
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 Statut Membre
 
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 Statut Membre 55
 
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