即時嘗試將流(System.Net.ConnectStream)轉換爲字節數組。任何關於如何做這件事的想法/例子?C#如何將System.Net.ConnectStream轉換爲字節[](數組)
回答
Stream sourceStream = ... // the ConnectStream
byte[] array;
using (var ms = new MemoryStream())
{
sourceStream.CopyTo(ms);
array = ms.ToArray();
}
在這種情況下,你使用內存的次數超過3次你的流。如果你的流可以比你的電腦擁有更多的內存,那就不太好了。在這種情況下,您需要使用Stream.Read從源碼流中讀取數據塊並使用這些塊。 –
請注意'Stream.CopyTo'僅在.NET 4.0及更高版本中可用。請參閱凱文的4.0版之前的答案。 –
謝謝你!它的工作! @Thomas – 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),你可以用'64 << 10'代替'65536',左邊是你的號碼,右邊是'0 =字節,10 =千葉,20 =兆字節,30 =千兆字節,等等......'所以一個2MB的緩衝區就是'2 << 20' –
另外,你爲什麼鎖定_lock?如果您試圖獲得流的獨佔訪問權限,則應該鎖定與流綁定的內容(或者調用[Stream.Synchronized](http://msdn.microsoft.com/zh-cn/library/system.io)。 stream.synchronized.aspx)在傳入之前)。如果您在同一時間轉換了兩個不同的***流,那麼您的代碼中沒有任何操作會中斷 –
在從Freeetje一個答案有方法writen名爲 'ReadToEnd的'。工作對我來說就像魅力。
How do I get the filesize from the Microsoft.SharePoint.Client.File object?
- 1. 將C#字節數組轉換爲C++
- 2. 將C#字節數組轉換爲VB.NET
- 3. C:將字節數組轉換爲struct
- 4. 如何將struct數組轉換爲c#中的字節數組?
- 5. 如何將字節數組轉換爲C#中的雙數組?
- 6. 如何將Java字節數組轉換爲Scala字節數組?
- 7. 將NSData轉換爲base64encoded並將字節數組轉換爲C#
- 8. 如何將字符串轉換爲C#中的字節數組?
- 9. 如何將C#字節數組轉換爲結構化數據?
- 10. C#將字節字符串轉換爲字節數組
- 11. 如何將字符串數組轉換爲字節數組? (java)
- 12. 如何將Short轉換爲Objective-c中的字節數組?
- 13. 如何將BITMAPINFOHEADER轉換爲使用C++的字節數組
- 14. 如何將字節數組轉換爲zip文件在c#中?
- 15. 如何使用C#將字節[]轉換爲數組(並返回)?
- 16. 如何將IplImage opencv轉換爲字節數組(bmp格式)C++?
- 17. 如何將UIImagePicker圖像轉換爲字節數組objective-c
- 18. Objective-C - 如何將字節數組轉換爲NSString?
- 19. 如何將枚舉轉換爲Objective-C中的字節數組?
- 20. objective c - 如何將nsdata轉換爲字節數組
- 21. c#如何將pictureBox.Image轉換爲字節數組?
- 22. C#:如何將BITMAP字節數組轉換爲JPEG格式?
- 23. 如何將結構轉換爲C中的字節數組?
- 24. 將字節轉換爲數字C#
- 25. 如何將數字轉換爲字節?
- 26. 將字符串數組(字節值)轉換爲字節數組
- 27. 將byte []數組轉換爲字節數
- 28. 如何將字符串數組轉換爲字節數組在c#中.net
- 29. C#轉換爲字節數組
- 30. 轉換爲C字節數組長長
剛剛讀入緩衝區('字節[]')。在MSDN上查看['Stream.Read'](http://msdn.microsoft.com/en-us/library/system.io.stream.read.aspx)。 – Oded
@Oded,是的,但它並不是一個很簡單的方法來複制整個流的內容(除非你知道它的長度,ConnectStream並不總是這樣) –