У меня есть список файлов, и мне нужно прочитать их каждый в определенном порядке в байт [] заданного размера. Само по себе это не проблема для отдельного файла, просто 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.
Спасибо:)