पर एक स्ट्रीम (System.Net.ConnectStream) को बाइट सरणी में कनवर्ट करने का प्रयास कैसे कर सकता हूं। यह कैसे किया जा सकता है इस पर कोई विचार/उदाहरण?सी # मैं System.Net.ConnectStream को एक बाइट [] (सरणी)
उत्तर
Stream sourceStream = ... // the ConnectStream
byte[] array;
using (var ms = new MemoryStream())
{
sourceStream.CopyTo(ms);
array = ms.ToArray();
}
इस मामले में आप स्मृति को 3 गुना अधिक आपकी धारा यह बहुत अच्छा नहीं है अगर आपकी स्ट्रीम आपके पीसी की तुलना में अधिक मेमोरी ले सकती है। इस मामले में आपको स्ट्रीम स्ट्रीम का उपयोग करने की आवश्यकता है। स्रोत स्ट्रीम से डेटा के हिस्सों को पढ़ने और इस भाग के साथ काम करने के लिए पढ़ें। –
ध्यान दें कि 'Stream.CopyTo' केवल .NET 4.0 और ऊपर उपलब्ध है। पूर्व 4.0 संस्करण के लिए केविन का जवाब देखें। –
धन्यवाद आदमी! यह काम कर रहा है! @ थॉमस – Mulaiko
इस प्रयास करें ...
private static readonly object _lock = new object();
public static byte[] readFullStream(Stream st)
{
try
{
Monitor.Enter(_lock);
byte[] buffer = new byte[65536];
Int32 bytesRead;
MemoryStream ms = new MemoryStream();
bool finished = false;
while (!finished)
{
bytesRead = st.Read(buffer.Value, 0, buffer.Length);
if (bytesRead > 0)
{
ms.Write(buffer.Value, 0, bytesRead);
}
else
{
finished = true;
}
}
return ms.ToArray();
}
finally
{
Monitor.Exit(_lock);
}
}
एक टिप है, यदि आप गोलाकार संख्या बफर (जैसे कि आपके उदाहरण में 64k) का उपयोग कर रहे हैं, तो आप '65536' को' 64 << 10' से बदल सकते हैं जहां बायीं तरफ आपकी संख्या है और दाईं ओर है '0 = बाइट्स, 10 = किलोबाइट्स, 20 = मेगाबाइट्स, 30 = गीगाबाइट्स, ect ... 'तो एक 2 एमबी बफर' 2 << 20' –
भी होगा, आप _lock पर क्यों लॉक कर रहे हैं? यदि आप स्ट्रीम में विशेष पहुंच प्राप्त करने का प्रयास कर रहे हैं तो आपको स्ट्रीम से बंधे कुछ (या स्ट्रीम [सिंक्रनाइज़ेड] (http://msdn.microsoft.com/en-us/library/system.io पर कॉल करना चाहिए) पर लॉक होना चाहिए। stream.synchronized.aspx) इसे पारित होने से पहले)। आप अपने कोड में कुछ भी नहीं कर रहे हैं जो टूट जाएगा यदि आप एक ही समय में दो *** अलग *** धाराओं को परिवर्तित करते हैं –
Freeetje से एक ही जवाब में नामित लिखा तरीका है 'ReadToEnd'। मेरे लिए एक आकर्षण की तरह काम किया ...
How do I get the filesize from the Microsoft.SharePoint.Client.File object?
- 1. एक बाइट सरणी
- 2. , एक वर्ग सी # में एक बाइट सरणी
- 3. एक बाइट सरणी
- 4. एक बाइट सरणी
- 5. एक बाइट सरणी
- 6. एक बाइट सरणी को एक संरचना
- 7. सी # बाइट सरणी में फ़ाइल
- 8. एक बाइट सरणी
- 9. मैं बाइट सरणी को ज़िप फ़ाइल
- 10. बाइट सरणी
- 11. जावा में एक बाइट सरणी को संपीड़ित और सी
- 12. बाइट सरणी
- 13. एक बाइटरी स्ट्रिंग प्रस्तुति को बाइट सरणी
- 14. बाइट सरणी
- 15. बाइट सरणी
- 16. बाइट सरणी
- 17. बाइट सरणी
- 18. बाइट सरणी
- 19. बाइट [] सरणी
- 20. इस बाइट सरणी को 1024
- 21. मैं जावा बाइट सरणी को स्कैला बाइट सरणी में कैसे परिवर्तित करूं?
- 22. मैं सी # में बाइट सरणी से हैशकोड कैसे उत्पन्न करूं?
- 23. OpenCV बाइट सरणी
- 24. मैं एक पाइथन टुपल (बाइट सरणी) के एक पूर्णांक
- 25. जावा में, मैं एक इनपुटस्ट्रीम को बाइट सरणी (बाइट []) में कैसे परिवर्तित कर सकता हूं?
- 26. Convert डेटाप्रकार बाइट सरणी
- 27. सी #: एक बाइट
- 28. एक md5 हैश बाइट सरणी को एक स्ट्रिंग
- 29. बाइट सरणी और मेमोरीस्ट्रीम
- 30. बाइट सरणी पीडीएफ
बस एक बफर में इसे पढ़ा ('बाइट []')। एमएसडीएन पर ['Stream.Read'] (http://msdn.microsoft.com/en-us/library/system.io.stream.read.aspx) देखें। – Oded
@ ओडेड, हाँ, लेकिन स्ट्रीम की पूरी सामग्री को कॉपी करने का यह एक आसान तरीका नहीं है (जब तक कि आप इसकी लंबाई नहीं जानते, जो हमेशा कनेक्टस्ट्रीम के साथ मामला नहीं है) –