द्वारा खपत बाइट्स क्या यह जानने का कोई तरीका है कि StreamReader द्वारा स्ट्रीम के कितने बाइट्स का उपयोग किया गया है?StreamReader
मेरे पास एक प्रोजेक्ट है जहां हमें एक फ़ाइल को पढ़ने की आवश्यकता है जिसमें बाइनरी डेटा की शुरुआत के बाद टेक्स्ट हेडर है।
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;
}
समस्या यह है कि जब मैं stream.Position
को _dataOffset
निर्धारित करते हैं, मैं स्थिति यह है कि StreamReader, नहीं हैडर के अंत तक पढ़ा है मिलता है: मेरी प्रारंभिक इस फाइल को पढ़ने के लिए प्रयास कुछ इस तरह था। जैसे ही मैंने इसके बारे में सोचा, यह समझ में आया, लेकिन मुझे अभी भी यह जानने में सक्षम होना चाहिए कि हेडर का अंत कहां है और मुझे यकीन नहीं है कि ऐसा करने का कोई तरीका है और अभी भी StreamReader का लाभ उठाएं।
वैसे यह निश्चित रूप से मेरी फॉलबैक स्थिति है, मैं बस यह देखना चाहता था कि इसे लागू करने से पहले कोई बेहतर तरीका है या नहीं। –