【发布时间】:2018-05-27 23:30:29
【问题描述】:
我有一个文件列表,我需要将它们按特定顺序读取到给定大小的字节 [] 中。对于单个文件,这本身不是问题,一个简单的 while ((got = fs.Read(piece, 0, pieceLength)) > 0) 可以完美地完成工作。文件的最后一部分可能比预期的要小,这很好。
现在,有一个棘手的问题:如果我有多个文件,我需要有一个连续的流,这意味着如果文件的最后一段比pieceLength 小,那么我需要读取(pieceLength-got)下一个文件,然后继续直到最后一个文件结束。
所以本质上,给定 X 个文件,我总是会读取长度正好是pieceLength 的片段,除了最后一个文件的最后一个片段,它可能更小。
我只是想知道 .net (3.5 SP1) 中是否已经有一些东西可以解决问题。我目前的方法是创建一个获取文件列表的类,然后公开一个Read(byte[] buffer, long index, long length) 函数,类似于 FileStream.Read()。这应该很简单,因为我不必更改读取数据的调用代码,但在我重新发明轮子之前,我只想再次检查轮子是否尚未内置到 BCL 中。
谢谢:)
【问题讨论】: