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 :

Comment lire des lignes avec un BinaryReader ?


Sujet :

C#

  1. #1
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut Comment lire des lignes avec un BinaryReader ?
    Bonjour,

    J'utilise un binary reader pour lire un fichier, ca marche tres bien pour les info de type binaire. Mais dans mon fichier, j'ai aussi des chaines terminées par line feed
    Comment puis-je facilement les lire aussi ?
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  2. #2
    Membre éprouvé Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Points : 958
    Points
    958
    Par défaut
    Si c'est dans le même fichier et que tu utilises le BinaryReader tu ne pourras pas facilement lire des chaines de caractères telles qu'elles. Il faudra que tu les répère manuellement.

  3. #3
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut Merci mais non !
    Salut

    Et bien non !

    Comme j'aime chipoter j'ai trouvé un truc qui peut etre TRES utile

    Voilà
    En fait j'ouvre un binaryreader et j'associe AUSSI au basestream un streamreader !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
          BinaryReader binReader = new BinaryReader(File.Open("d:/ta/tmpbld/bel01/aa", FileMode.Open));
          StreamReader strReader = new StreamReader (binReader.BaseStream);
    Je lis des trucs un binaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
          icp.sCP = binReader.ReadBytes(5);
          icp.nbIdx = binReader.ReadInt32();
          icp.posData=binReader.ReadInt32();
    Et puis pourquoi pas je me repositionne dans le fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          binReader.BaseStream.Position = 4096 + icp.posData + (xx.nbIdx*13);
    Et puis hop je lis des lignes !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      string oli = strReader.ReadLine();
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    salut

    C'est quand meme un peu tordu ton bazar...

    Mais bon, doit surement y avoir une explication logique pour que tu sois obligé de faire cela...

    En tout cas, l'info est bonne à savoir

    The Monz, Toulouse
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  5. #5
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Tordu !

    Pourquoi ?
    J'avoue que c'est un peu acrobatique mais tres efficace !!

    Je travaille avec un fichier Hybride qui contient des structures binaires qualifiant des zones de texte

    En C c'est asser facile a gerer

    Et j'avoue que je découvre qu'il y a moyen de faire tres trucs asser facile a lire en csharp aussi

    Mais il faut chercher
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  6. #6
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut encore un petit commentaire
    Tu a l'impression que c'est tordu, mais imagine n'importe quelle table de base de donnée !

    A ton avis keki faut faire pour recuperer l'info ?
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  7. #7
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Citation Envoyé par olibara Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
          BinaryReader binReader = new BinaryReader(File.Open("d:/ta/tmpbld/bel01/aa", FileMode.Open));
          StreamReader strReader = new StreamReader (binReader.BaseStream);
    Fallait y penser !
    Tu as trouvé ça tout seul ou tu as déniché ça dans un recoin sombre du net ?

    Si ton problème est résolu, n'oublies pas le tag


  8. #8
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Salut !

    Non, j'ai trouvé ca tout seul

    Il y a néanmoins un petit bemol ..

    Tout se passe tres bien si l'on fait un readline apres les binread
    Mais si l'on doit melanger les binread avec des streamread il y a un bingz que je n'ai pas encore pris le temps d'essayer de résoudre

    Il appararait que le binreader n'utilise pas un buffer de lecture de la meme maniere que le streamreader

    Si tu controle la position dans le fichier avec le binreader cette position est incrementée a chaque fois du nombre de bytes effectivement lu
    Ce qui n'empeche pas de modifier cette position pour transerer la lecture a un autre endroit

    Par contre quand tu fais un readline, la position est incrémentée de 1024 quellle que soit la taille de la chaine utile. Le streamreader se debrouille ensuite pour "grignoter" ce buffer a chaque readline ce qui casse evidement un peu la belle mécanique combinée que j'utilisais tant que mes sections binaires et string n'etaient pas trop imbriquées.

    Pour le moment j'en suis revenu a un pur binreader en preparant des chaines préfixées integer 7 bit
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

Discussions similaires

  1. comment supprimer des lignes avec macros
    Par kadij dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/06/2009, 06h14
  2. [Excel] Comment lire des fichiers excel avec php?
    Par dear_rihab dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 02/11/2007, 12h38
  3. Réponses: 2
    Dernier message: 24/11/2006, 08h54
  4. Comment changer les couleurs des lignes avec displaytag
    Par rlnd23 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 09/10/2006, 13h52
  5. [Requete] Comment ignorer des lignes avec un LOAD DATA
    Par frangin2003 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/11/2005, 12h14

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