我們可以克隆一個Stream嗎?可以克隆.NET流嗎?
16
A
回答
13
不,流通常是指某種類型的本地資源(一個套接字,一個文件句柄等),所以它們不能被克隆或序列化。此外,許多數據流僅支持前向,並且不支持查找,因此您甚至無法從流中重新讀取數據。
你可以從一個可讀的流中做什麼,但是將它複製到一個可以作爲字節數組移動的MemoryStream中。
請參閱以下職位說明如何做到這一點的代碼片段: How do I copy the contents of one stream to another?
public static void CopyStream(Stream input, Stream output)
{
byte[] buffer = new byte[32768];
while (true)
{
int read = input.Read (buffer, 0, buffer.Length);
if (read <= 0)
return;
output.Write (buffer, 0, read);
}
}
1
不,你不能克隆的通用流。
3
否。克隆不是在Stream
類中通常支持的操作。要這樣,它將不得不包含Stream
類的所有可能的實現。
這可能適用於像FileStream
這樣的項目,但請考慮這對於說NetworkStream
這意味着什麼。克隆通常具有創建完全獨立的對象的概念,這些對象在創建時是相同的。這通常不適用於像TCP連接這樣的項目,這些項目通常在某個級別包裝在NetworkStream
中。
+0
這是真的,但它已經像一些Stream實現不支持某些引發NotSupportedException的功能。如果涉及到克隆,可能也會做同樣的事情。 – rafek 2013-05-15 09:24:25
相關問題
- 1. 我們可以克隆WebView嗎?
- 2. .NET Hashtable的克隆
- 3. 是否可以克隆multimethod?
- 4. 是否可以克隆Z3_context?
- 5. 可以在流產的Perfarce克隆後重建Perforce/Mercurial連接嗎?
- 6. .Net MemberwiseClone vs Java克隆
- 7. 克隆一個指針向量,我可以以某種方式克隆一個迭代器嗎?
- 8. 我可以使用Visual Studio克隆遠程github存儲庫嗎?
- 9. Prestashop可以用來構建一個craigslist克隆嗎?
- 10. 我可以克隆一個xml節點嗎?
- 11. 我可以禁用Mercurial克隆/拉動HTTP嗎?
- 12. 我可以在Script.aculo.us的重影中自定義克隆嗎?
- 13. 我可以克隆暫停的Docker容器嗎?
- 14. 已經在使用的文件可以在VB.NET中克隆嗎?
- 15. 我們可以深入克隆AngularJS中的事件對象嗎?
- 16. 使用JSON.stringify進行深度比較和克隆可以嗎?
- 17. iPhone開發 - 可以克隆ABRecord?
- 18. 是否可以克隆sugarcrm模塊?
- 19. git克隆可以從http2中受益
- 20. jQuery克隆:它應該克隆DOM級別0事件嗎?
- 21. 克隆或不克隆
- 22. 在rails中克隆記錄,是否可以克隆關聯和深度複製?
- 23. Gitlab無法克隆服務器上,但可以在客戶端克隆
- 24. 可拖拽的克隆Jquery?
- 25. 克隆一個字段而不克隆文本以及
- 26. 克隆其中的文本字段以及克隆文本?
- 27. 克隆對象克隆與實現可複製的接口
- 28. 可拖動已droppped和克隆,但克隆也不能拖動
- 29. 在mediastreamer2中克隆攝像頭流
- 30. 如何流程註釋克隆功能?
Stream自從.NET 4以來有了一個CopyTo方法4 – Alex 2012-04-25 12:31:36
很高興知道已添加,謝謝!當時,它沒有。 – Josh 2012-05-25 19:12:05