KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Is there a way to know how many bytes of a stream have been used by StreamReader? I have a project where we need to read a file that has a text header followed by the start of the binary data. My initial attempt to read this file was something like this: 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; } The problem is that when I set _dataOffset to stream.Position , I get the position that the StreamReader has read to, not the end of the header. As soon as I thought about it this made sense, but I still need to be able to know where the end of the header is and I'm not sure if there's a way to do it and still take advantage of StreamReader.
Tags (comma-separated)
Save Edits
Cancel