我有一个文件列表,我需要按给定大小的byte []按特定顺序读取它们。这对于单个文件本身并不是问题,简单的而((got = fs.Read(piece,0,pieceLength))> 0)完成工作完全正常。该文件的最后一部分可能比预期的要小,这很好。是否有内置的方式来处理多个文件作为一个流?
现在有一个棘手的问题:如果我有多个文件,我需要一个连续的流,这意味着如果一个文件的最后一部分小于那个pieceLength,那么我需要阅读(pieceLength-got )下一个文件,然后继续下去,直到最后一个文件结束。
所以,基本上,给定X文件,我会一直阅读完全是pieceLength长的作品,除了最后一个最后一个文件,可能会更小。
我只是想知道是否已经有内置的.net(3.5 SP1)内置的东西。我目前的做法是创建一个类,它接受一个文件列表,然后公开一个类似于FileStream.Read()的函数Read(byte[] buffer, long index, long length)
函数。这应该是非常直接的,因为我不必更改读取数据的调用代码,但在重新开始之前,我只想仔细检查车轮是否已经内置到BCL中。
谢谢:)
这实际上是一个相当不错的办法,我只是还没有确定,如果我想实现我自己的流。相反,一个IEnumerable,一也可以工作,因为那时我CombinationStream拥有“内部流”完全控制。我会考虑哪种方法最适合我。 –
2009-02-10 21:42:40