¿Hay alguna forma de saber cuántos bytes de una secuencia ha utilizado StreamReader?Bytes consumidos por StreamReader
Tengo un proyecto en el que tenemos que leer un archivo que tiene un encabezado de texto seguido del inicio de los datos binarios. Mi primer intento de leer este archivo era algo como esto:
private int _dataOffset;
void ReadHeader(string path)
{
using (FileStream stream = File.OpenRead(path))
{
StreamReader textReader = new StreamReader(stream);
do
{
string line = textReader.ReadLine();
handleHeaderLine(line);
} while(line != "DATA") // Yes, they used "DATA" to mark the end of the header
_dataOffset = stream.Position;
}
}
private byte[] ReadDataFrame(string path, int frameNum)
{
using (FileStream stream = File.OpenRead(path))
{
stream.Seek(_dataOffset + frameNum * cbFrame, SeekOrigin.Begin);
byte[] data = new byte[cbFrame];
stream.Read(data, 0, cbFrame);
return data;
}
return null;
}
El problema es que cuando me puse a _dataOffset
stream.Position
, me da la posición de que el StreamReader ha leído, no el final de la cabecera. Tan pronto como lo pensé, esto tenía sentido, pero aún necesito saber dónde está el final del encabezado y no estoy seguro de si hay una manera de hacerlo y de aprovechar StreamReader.
Bueno, eso es ciertamente mi posición alternativa, solo quería ver si había una manera mejor antes de implementarlo. –