C# में Stream से byte[] (बाइट ऐरे) कैसे बनाएं?
सभी को नमस्कार! मैं एक शुरुआती C# डेवलपर हूं, और मुझे एक समस्या आई है। मुझे Stream से सभी डेटा को byte[] (बाइट ऐरे) में पढ़ना है। Stream विभिन्न स्रोतों से प्राप्त हो सकता है: फ़ाइल, नेटवर्क रिक्वेस्ट, MemoryStream आदि।
यहां कोड का एक उदाहरण है जो मैं लिखने की कोशिश कर रहा हूं:
```csharp
public byte[] ReadStream(Stream stream)
{
// मुझे पता है कि Stream में Length होता है, लेकिन यह हमेशा उपलब्ध नहीं होता।
// सभी बाइट्स को सही तरीके से कैसे पढ़ें?
byte[] buffer = new byte[stream.Length]; // त्रुटि "Stream does not support seeking"
stream.Read(buffer, 0, (int)stream.Length);
return buffer;
}
```
समस्या यह है कि `stream.Length` `NotSupportedException` फेंक सकता है अगर Stream seeking (खोज) का समर्थन नहीं करता। उदाहरण के लिए, `NetworkStream` या `GZipStream` के साथ काम करते समय Length प्रॉपर्टी उपलब्ध नहीं होती।
इसके अलावा, भले ही Length उपलब्ध हो, मुझे यकीन नहीं है कि `Read()` एक ही कॉल में सारा डेटा पढ़ लेगा। `Read()` मेथड अनुरोधित बाइट्स से कम लौटा सकता है।
मैं ढूंढ रहा हूं