在C#中创建部分(或有界)FileStream

Alx*_*ndr 10 c# file stream

我有一个FileStream,它由几个放在一个文件中的文件组成,我有一个文件长度列表,换句话说,我可以轻松地计算所有文件的位置和长度.我想要创建的是一个Open方法,它接受fileindex并返回仅包含该文件的流.目前我已经使用内存流实现了这个,但这迫使我将整个(不是容器,但整个包含的)文件复制到内存中,我不想这样做.所以,我希望能够做的是创建一个实现流的类,并获取另一个流,一个偏移量和一个长度参数,然后是可读和可搜索的,只有当你做Seek(0)时你应该得到偏移量下层流的.所以就像一个适配器类,我想知道这是否可能,甚至是一个好主意,或者如果有人对如何解决这个问题有任何更好的想法.我意识到,如果我按照我刚刚描述的方式进行操作,我需要确保对底层流的访问是同步的,并且所有打开的部分流都包含一个私有变量,告诉它们当前在流中的位置,但是这个应该是可行的,对吗?以前有人做过这样的事吗?或者是否有一个我可以使用的简单.NET类?任何帮助,将不胜感激.

哦,抱歉英文不好,我忘了用英文安装我的浏览器,所以拼写检查器告诉我一切都错了.

sha*_*tor 2

如果您使用 .NET 4.0,则可以使用内存映射文件。它们的作用与您所描述的差不多:您可以将由偏移量和长度指定的大文件的“视图”映射到内存中,并使用Stream.

否则,我认为你的方法听起来不错。只需注意涉及超出预期文件边界的读取或写入的极端情况!