[.NET] StreamReader, position dans un fichier, fonction peek et seek

StreamReader, position dans un fichier, fonction peek et seek [.NET] - C#/.NET managed - Programmation

Marsh Posté le 09-10-2006 à 17:47:22    

Hello,
 
J'ai un pb avec le StreamReader, je dois lire defois de suite un Stream, je le list une première fois et j'attends dans une boucle while qu'il se temine, j'utilise la fonction Peek() du StreamReader qui me retourne -1 si on est a la fin du stream.

Code :
  1. StreamReader str = new StreamReader(monStream);
  2. while str.Peek()>0
  3.        str.readLine();


 
Jusque la tout roule, mais par la suite je suis incapable de revenir au debut du fichier.
 
que je fasse:

Code :
  1. str.close()
  2. str =  new StreamReader(monStream);


 

Code :
  1. str.Peek() me retourne toujours -1


 
Si je fais un truc du genre
 

Code :
  1. str.baseStream.Position = 0


 
str.Peek me retourne toujours -1, par contre si je fais un str.readline il me retourne la premiere ligne ...
 
str.BaseStream.Seek(0, System.IO.SeekOrigin.Begin) me dit que les arguments sont mauvais :/.
 
Je ne comprends plus :(, il n'est donc pas possible de revenir au debutd'un flux ou plutot que la méthode Peek() me retourne autre chose que -1 en ayant pourtant changer de placer dans le fichier.


---------------
"PAR LE POUVOIR DU CRÂNE ANCESTRAL, JE DETIENS LA FORCE TOUTE PUISSANTE".
Reply

Marsh Posté le 09-10-2006 à 17:47:22   

Reply

Marsh Posté le 11-10-2006 à 17:43:03    

Clarkent a écrit :

str.BaseStream.Seek(0, System.IO.SeekOrigin.Begin) me dit que les arguments sont mauvais :/.

C'est pourtant la bonne façon de procéder.
Tu peux poster l'intégralité de la call stack de l'exception stp ?
 
Sinon, t'as essayé de faire ça directement sur le stream dont tu te sers pour créer ton streamReader ? plutôt que de passer par StreamReader.BaseStream ?

Reply

Marsh Posté le 13-10-2006 à 01:39:49    

_Mose_ a écrit :

C'est pourtant la bonne façon de procéder.
Tu peux poster l'intégralité de la call stack de l'exception stp ?
 
Sinon, t'as essayé de faire ça directement sur le stream dont tu te sers pour créer ton streamReader ? plutôt que de passer par StreamReader.BaseStream ?


c'est lors de la compile que ca me dit que les arguments sont faux, mais c'est passé dans une autre classe :/, je devais pas m'y prendre correctement.
 
concernant le stream d'origine je ne crois pas qu'il ait une méthode seek, vu que c'est le streamreader qui pointe sur le stream et le stream bein n'ait qu'un stream, enfin je ne sais pas, mais je crois avoir regardé, enfin merci ;).


---------------
"PAR LE POUVOIR DU CRÂNE ANCESTRAL, JE DETIENS LA FORCE TOUTE PUISSANTE".
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed