2010-06-28 9 views

Répondre

3

Vous pouvez simplement appeler la méthode Seek sur le Stream que vous passez à BinaryReader à la position dans le fichier que vous voulez commencer à lire. Puis, une fois que vous passez le flux à BinaryReader, vous pouvez appeler la méthode ReadInt16 autant de fois que nécessaire.

+1

Inclure le code ou quelqu'un d'autre. – xcud

3

Quelque chose comme ça devrait le faire pour vous:

private IEnumerable<Int16> getShorts(string fileName, int start, int count) 
using(var stream = File.OpenRead(fileName)) 
{ 
    stream.Seek(start); 
    var reader = new BinaryReader(stream); 
    var list = new List<int16>(count); 
    for(var i = 0;i<count;i++) 
    { 
     list.Add(reader.ReadInt16()); 
    } 
} 

qui est essentiellement ce que casper a écrit que dans le code

+0

Dois-je multiplier par 2 pour prendre en compte le fichier constitué de valeurs de 2 octets? – cabgef

+0

@mikeh, 'Seek' cherche juste un nombre donné d'octets. Donc, cela dépend vraiment de ce que 'start 'signifie. –

+1

commencer dans cet exemple est l'octet que vous souhaitez utiliser comme position de départ. Si vous préférez donner le raccourci pour commencer à lire, vous pouvez simplement faire .Seek (démarrer * 2) –