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 ?
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 ?
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.
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 !
Je lis des trucs un binaire
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);
Et puis pourquoi pas je me repositionne dans le fichier
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 hop je lis des lignes !
Code : Sélectionner tout - Visualiser dans une fenêtre à part binReader.BaseStream.Position = 4096 + icp.posData + (xx.nbIdx*13);
Code : Sélectionner tout - Visualiser dans une fenêtre à part string oli = strReader.ReadLine();
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
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
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 ?![]()
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
Partager