begin process at 2012 02 11 18:13:53
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Système

 > 

Fichier & Disque

 > 

[C#]: Compter le nombre de ligne d'un fichier et la position du streamReader


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[C#]: Compter le nombre de ligne d'un fichier et la position du streamReader

lundi 19 juillet 2010 à 16:05:27 | [C#]: Compter le nombre de ligne d'un fichier et la position du streamReader

Karibot

Bonjour,
je souhaitrai lire un fichier grace à streamreader et connaitre le nombre de lignes contenues dans le fichier ainsi que le numéro de la ligne qu'il est en train de lire.
le but est de créer une pseudo barre de progression de mon traitement!
j'ai essayé avec basestream.length et .position mais cela n'a pas l'air de marcher: length me renvoie la longueur en byte et pas le nombre de lignes et .position me renvoie '0' tout le temps.

Avez vous une idée?
merci.
lundi 19 juillet 2010 à 17:18:15 | Re : [C#]: Compter le nombre de ligne d'un fichier et la position du streamReader

coq

Administrateur CodeS-SourceS
Bonjour,

Si le fichier n'est pas constitué de lignes à taille fixe (en octets, pas en nombre de caractères) ce n'est pas possible sans parcourir le fichier.
BaseStream.Position sera quant à elle mise à jour au fur et à mesure que le fichier est lu, et sera si mes souvenir sont bons dépendante de la taille du buffer utilisé pour la lecture du fichier.


/*
coq
MVP Visual C#
CoqBlog
*/
lundi 19 juillet 2010 à 17:26:35 | Re : [C#]: Compter le nombre de ligne d'un fichier et la position du streamReader

Karibot

Merci le Coq :)
question:
comment je peux faire pour savoir si mes lignes sont identiques en octets? parce qu'on nombre de caractères, elles ne le sont pas...

sinon, comment puis-je m'y prendre pour faire une barre de progression si je ne peux pas calculer le nombre de ligne qu'il traite? si je transforme mon streamreader en list<>, je pourrais faire un list.count pour connaitre le nombre de ligne mais je crais que sur de gros fichiers cela ralentisse le traitement...
une idée?
samedi 24 juillet 2010 à 18:59:14 | Re : [C#]: Compter le nombre de ligne d'un fichier et la position du streamReader

MasterShadows

Salut, pour ta barre de progression, tu n'as pas besoin de connaitre ton nombre de lignes. Ton nombre de caractère suffit.

Imaginons que ton fichier à une taille de 8192 octets. (Donc .Length de streamreader vaut 8192)

Imaginons que tu lise ton fichier avec un buffer de 64 octets.
A chaque fois que le buffer est remplit, il est rempli de 64 octets.

Donc pour ta barre de progression, une base comme cela devrait marcher :

Code C# :
public class WorkingBar
{
    private ProgressBar bar;

    public WorkingBar(ref ProgressBar bar)
    {
       this.bar = bar;
       this.bar.Minimum = 0;
       this.bar.Maximum = 100;
    }

    public void Perform(float value, float total)
    {
        bar.Value = value / total * 100f;
    }
}

Ensuite avec le StreamReader :

Code C# :
private WorkingBar bar;
private char[] buffer;
private StringBuilder result;

public FileReader(ref ProgressBar bar, int bufferSize)
{
   bar = new WorkingBar(ref bar);
   buffer = new char[bufferSize];
   result = new StringBuilder();
}

public void Read(string file)
{
    using(StreamReader reader = new StreamReader(file))
    {
        int currentIndex = 0;
        // Tant que l'on est pas à la fin du fichier
        while(!reader.EndOfStream)
        {
            // Remplit le buffer
            reader.Read(buffer, currentIndex, buffer.Length);
            result.Append(buffer);
            currentIndex += buffer.Length;

            // Nouvelle valeur de progression
            bar.Perform((float)currentIndex, (float)reader.BaseStream.Length);
            Application.DoEvents();

            // Pause le thread histoire de faire croire que l'on lit un très gros fichier
            Thread.Sleep(100);
        }
        reader.Close();
    }
}


Voili voilou, tu devrais pouvoir t'en sortir avec ça...
samedi 24 juillet 2010 à 19:06:11 | Re : [C#]: Compter le nombre de ligne d'un fichier et la position du streamReader

Karibot

Merci beaucoup MasterShadow,
je vais tester :)


Cette discussion est classée dans : fichier, ligne, nombre, position, streamreader


Répondre à ce message

Sujets en rapport avec ce message

[Appli Windows][c#] problème de longueur de chaine avec StreamReader [ par Julos59 ] Voila j'ai un fichier txt, chaque ligne fait 266 Charactères, j'ai ouvert le fichier avec ultraEdit pour vérifier.Quand je l'ouvre en utilisant Stream StreamReader System.Text.Encoding... [ par stlaural ] Dans une application en CSharp j'utilse StreamReader pour lire des fichier de code source (.cs). Je doit Stocker les ligne du fichier dans une variabl Nombre de ligne d'un fichier xls (Excel) [ par oxboz ] Bonjour, La question est simple: Est ce possible d'avoir le nombre de lignes d'un fichier Excel? Si oui comment ?  :) Merci. Lecture de plusieurs ligne dans un fichier [ par Mike7773 ] Bonjour, je reprend la programmation après quelques temps d'abandon et comme je m'y attendais je ne me souviens de plus grand chose... J'essaye de f afficher un nombre de ligne du fichier TXT dans le textbox en c# [ par moh05 ] bonjour , svp, j'ai besoin d'une aide : j'ai met ce code source au niveau de mon app c# et ça ne marche pas : //-----afficher le nombre de ligne du Copier une zone d'un fichier Txt [ par progscoubi ] Bonjour à tous, je me lance dans la programmation et je cherche à résoudre un problème que j'ai rencontré cette semaine. Contexte : J'ai un fichier Décalage à chaque nouvelle lecture du fichier txt [ par Toinou59118 ] Bonsoir, Mon titre n'est peut-être pas assez explicite donc voici mon problème : J'ai réalisé un petit Agenda en C# et j'enregistre mes données dans fichier log [ par macadelino ] Bonjours ,mon pb est le suivant :j'ai un fichier que j'ai ouvert et ensuite mis dans une liste à travers chaque ligne du fichier.j'ai fait une fonctio Supprimer ligne vide dans fichier txt [ par LilBisk ] Bonjour à tous! J'ai fait un sous-programme permettant de lire un fichier .txt, récupérer les informations séparées par des ";" et il lit tout le fic [c#] ouverture et affichage de plusieurs fichiers en meme temps ! [ par vto59 ] Bonjour a tous, Ce que je souhaite faire, c'est ouvrir plusieurs fichiers en meme temps et les rassembler en un seul fichier ! J'ai essayer ça : [


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,042 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales