J'ai besoin de lire un certain nombre de points de données courts (int16) à partir d'un fichier binaire, en commençant à une position spécifique. Merci!Comment lire des courts-circuits à partir d'un fichier binaire commençant à la position x, pour les valeurs y?
Répondre
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.
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
Dois-je multiplier par 2 pour prendre en compte le fichier constitué de valeurs de 2 octets? – cabgef
@mikeh, 'Seek' cherche juste un nombre donné d'octets. Donc, cela dépend vraiment de ce que 'start 'signifie. –
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) –
Inclure le code ou quelqu'un d'autre. – xcud