Avatar ·

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()` मेथड अनुरोधित बाइट्स से कम लौटा सकता है। मैं ढूंढ रहा हूं