我试图找到一种方法来读取流的一部分。我有一个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