[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

2 réponses

  1. 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
    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
  2. 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