IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Question sur StreamReader


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut Question sur StreamReader
    Bonjour,

    J'ai un certain nombre de lignes à lire dans un fichier, mais je ne sais pas a priori comment je devrais les interpréter. Je peux déterminer la manière dont sont formatées les données en prenant une des lignes (la première, tant qu'à faire) et à l'analyser. Je saurai ainsi que algo/boucle appliquer à l'ensemble.

    Ma question est donc :

    Y a-t-il moyen de lire la première ligne sans "déplacer le pointeur" dans le fichier, afin de recommencer à la première ligne (via un ReadLine())une fois que je serais rentré dans ma boucle ?

    PS : je suis en .Net 2.0

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Tu peux parfois naviguer avec la fonction Seek() ou utiliser la propriété Position qui possède un setter sur le BaseStream du StreamReader. Ou tu peux utiliser le Peek qui te retourne un caractère sans faire avancer le pointeur.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Citation Envoyé par Nathanael Marchand Voir le message
    Tu peux parfois naviguer avec la fonction Seek() ou utiliser la propriété Position qui possède un setter sur le BaseStream du StreamReader.
    J'ai oublié de préciser que j'étais en version 2.0.
    Et apparemment, Seek() et Position n'y sont pas disponibles...

    Citation Envoyé par Nathanael Marchand Voir le message
    Ou tu peux utiliser le Peek qui te retourne un caractère sans faire avancer le pointeur.
    Effectivement, mais le seul 1er caractère m'est inutile.

    Merci néanmoins de t'être penché sur mon problème.

  4. #4
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Citation Envoyé par oodini Voir le message
    J'ai oublié de préciser que j'étais en version 2.0.
    Et apparemment, Seek() et Position n'y sont pas disponibles...
    Attention! Relis bien mon message
    Seek et Position son sur monReader.BaseStream (qui est de type Stream) pas sur le StreamReader lui même.

    http://msdn.microsoft.com/en-US/libr...(v=VS.80).aspx

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Ça devrait le faire, mais je ne suis pas encore en mesure de tester.

    Je te tiens au courant !

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Bon, j'ai fait le bout de code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
                StreamReader reader = new StreamReader(path);
     
                long toto = reader.BaseStream.Position;
     
                string current_line;
                do
                {
                    current_line = reader.ReadLine();
                    toto = reader.BaseStream.Position;
                }
                while (current_line.StartsWith("SURFMT=") == false);
    Lors de la définition de toto (2ème instruction), il prend la valeur 0.
    Dans la première exécution de la boucle, il prend la valeur 1024. Le corps de la boucle est exécuté deux autres fois (SURFMT= apparaît à la 3ème ligne), mais la valeur reste toujours à 1024.

    Il me semble qu'elle devrait évoluer, non ?

Discussions similaires

  1. [debutant] Questions sur 1 futur projet
    Par cyrull22 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 28/04/2003, 21h49
  2. Quelques questions sur le TWebBrowser...
    Par CorO dans le forum Web & réseau
    Réponses: 3
    Dernier message: 17/01/2003, 21h23
  3. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 08h45
  4. Réponses: 2
    Dernier message: 11/08/2002, 21h27
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo