【发布时间】:2013-12-30 09:21:28
【问题描述】:
有谁知道一种复合流解决方案,它将流的第一部分预加载到 MemoryStream 中,并将其余部分保留为原始流,当需要后续部分时需要访问该原始流?
我应该想象一些包装类将实现 Stream 接口,并根据访问的部分透明地在两个流之间进行访问。
我希望这是以前有人可能已经解决的解决方案,也许是为了优化读取大型 FileStream 的性能。
在我的情况下,我正在尝试解决 Windows Phone 8 中从 SD 卡读取大文件的错误。此答案中提供了我试图解决的问题的更多详细信息: https://stackoverflow.com/a/17355068/250254
【问题讨论】:
-
@RussCam - 谢谢你,非常感谢!与我的流重叠的问题不完全相同,但我会挑选一下,看看是否有什么我可以适应的。
-
我认为这不是解决问题的正确方法...您打算将多少数据加载到 MemoryStream 中?如果我正确理解了这个问题,那么对于 long 的低 32 位中的任何偏移都会出现 Seek 问题,这意味着您需要将 4GB 的数据加载到内存中......
-
@ThomasLevesque - 试验似乎在 400408 位置附近问题可能会消失。所以大约 0.4 mb 需要保存在内存流中。仍在试验,所以我可能是错的!
标签: c# stream wrapper memorystream stream-wrapper