我試圖找到一種方法來讀取流的一部分。我有一個40000字節的流,只需要從位置8000讀到15000,可能有些容易,但我似乎無法找到一個簡單的方法來獲取流段。.Net從流中讀取流段
1
A
回答
0
由於讀取數據流的一部分,應該是很容易,我假設你實際上需要一個新的Stream對象,它只訪問基礎流的給定片段。
即。你想是這樣的:
Stream segment = new StreamSegment(underlyingStream, 8000, 7000);
我有這樣一個類,你可以在這裏找到:LVK.IO.PartialStream。它依賴於我的類庫中的其他類,特別是LVK.IO.WrapperStream,但是您可以在其中找到所有這些,只需抓取您實際需要的幾個文件即可(如果您決定使用它們)。
要使用它,您必須指定您的PartialStream對象是否擁有基礎流。如果是這樣,當你拋棄PartialStream對象時,它也會拋棄基礎流。
因此,對於上面的例子:(或者通過true
作爲第二個參數)
Stream segment = new PartialStream(underlyingStream, false, 8000, 7000);
假設它不應該擁有基礎流
注:
- 構建上面的PartialStream對象會將基礎流重新定位到該段的開始位置(上例中的位置8000)。
- 在使用部分流對象時,不應使用基礎流,因爲有一些內部簿記與段內的位置有關。如果您重新定位基礎流而不經過部分流,則行爲是未定義的。
+1
答案中的鏈接似乎被打破。你把項目搬到別的地方了嗎? – 2017-03-14 12:36:36
2
如果流支持查找,你可以跳到的位置,否則,您必須讀取流達到那個位置:
if (theStream.CanSeek) {
theStream.Seek(8000, SeekOrigin.Current);
} else {
// read 8000 bytes and throw away
}
// read the 7000 bytes to keep
相關問題
- 1. 從流中讀取性能低下。NET
- 2. Zend_Http_Client - 從流中讀取?
- 3. 從流中連續讀取?
- 4. 從HttpResponseMessage.Content讀取流內容
- 5. 讀取流
- 6. SslStream上的.NET XmlReader - 從流中讀取多個XML - obtatining XmlDocument
- 7. 如何從流讀取器或流寫入器分離流?
- 8. 如何從.NET中的流獲取MemoryStream?
- 9. 閱讀()從標準輸入讀取流
- 10. 從紅寶石流中讀取數據
- 11. 從C++中讀取右邊的流
- 12. 如何從流中讀取字符串
- 13. 從嵌入式資源流中讀取
- 14. 從流鎖中讀取Clojure函數
- 15. C++:從字符串流中讀取
- 16. 從libcurl提供的流中讀取jpeg
- 17. 從流中讀取PNG文件
- 18. 從流數據庫中讀取圖像
- 19. Boto3從Kinesis流中讀取時間戳
- 20. 從Windows Phone7中的流讀取
- 21. 從流中讀取不可破壞
- 22. 從洪流中讀取文件集
- 23. 從輸入流中讀取html java
- 24. 從流中讀取excel文件
- 25. 從文件流中讀取內容c#
- 26. 無法從Spark流中的單個文件讀取流數據
- 27. 在python中讀取HTTP流
- 28. 兩次讀取流
- 29. iPhone:讀取gzipped流
- 30. 讀取流兩次?
您是否需要將該段傳遞給另一段代碼,這段代碼需要一個只包含數據段的流?例如,您已將.PNG文件放在另一個文件中,並且希望使用Image.FromStream或類似的語言來加載PNG,但傳遞整個流失敗,因此您需要一個新的類似Stream的對象,只允許訪問PNG內容? – 2010-06-29 14:52:53