我试图找到一种方法来读取流的一部分。我有一个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. 撒克逊.Net从流中读取xml
- 3. 从流中读取JarEntry
- 4. 从封闭流中读取
- 5. 从流中读取对象
- 6. Zend_Http_Client - 从流中读取?
- 7. IndexOutOfBoundsException从流中读取时
- 8. 从流中连续读取?
- 9. 从输入流中读取
- 10. 从IText流读取Aspose pdf
- 11. 如何从textarea读取流?
- 12. 从HttpResponseMessage.Content读取流内容
- 13. 从TCP流读取多行
- 14. 从Mina.MessageReceived()读取字节流
- 15. SslStream上的.NET XmlReader - 从流中读取多个XML - obtatining XmlDocument
- 16. 如何从.NET中的流获取MemoryStream?
- 17. 读取流
- 18. 如何从流读取器或流写入器分离流?
- 19. 从Python中的RTSP流中读取帧
- 20. Julia可从流中读取而不是从文件中读取
- 21. 阅读()从标准输入读取流
- 22. 从文件流中读取内容c#
- 23. 从标准输入流中读取Hadoop
- 24. 从嵌入式资源流中读取
- 25. 从特定链接中读取流
- 26. 从C++中读取右边的流
- 27. 从流中读取不可破坏
- 28. Boto3从Kinesis流中读取时间戳
- 29. 从流中读取PNG文件
- 30. 从流中读取excel文件
您是否需要将该段传递给另一段代码,这段代码需要一个只包含数据段的流?例如,您已将.PNG文件放在另一个文件中,并且希望使用Image.FromStream或类似的语言来加载PNG,但传递整个流失败,因此您需要一个新的类似Stream的对象,只允许访问PNG内容? – 2010-06-29 14:52:53