Поток из поля файла в C # - PullRequest
       29

Поток из поля файла в C #

2 голосов
/ 04 декабря 2011

У меня есть функция с потоками (один для ввода и другой для вывода) в качестве параметров.Это криптографическая функция, поэтому потоки могут быть очень большими.Но поток, эта функция нужна не целый файл, это файловое поле. Итак, как я могу поместить файловое поле (оно может быть очень большим, поэтому нет MemoryStreams и т. Д.) В потоке?Извините за мой плохой английский.

1 Ответ

0 голосов
/ 04 декабря 2011

Если вы имеете в виду, что вам нужно предоставить поток, который является частью файла (или любого другого потока), то вы обычно используете один из двух подходов:

  • создать класс SubStream: Stream, который инкапсулирует (украшает) внутренний поток и отслеживает, сколько данных было прочитано, и разрешает только чтение «n» байтов (предоставленных в конструкторе) и возвращает 0 из Read после использования (также запомнив Максу запрошенные байты и оставшиеся байты во время чтения)
  • напишите свой код так, чтобы он внутренне отслеживал данные относительно некоторого ограничения, и просто никогда не перечитывали

Первоеполезно, если вам нужно передать этот поток уже существующему коду / библиотекам.

В обоих случаях IMO-код, который устанавливает поток, должен беспокоиться о данных «до», а вышеприведенное только о том, чточитаю слишком много.

Редактировать: вот что я написал ранее: http://protobuf -net.googlecode.com / svn / branch / v1 / protobuf-net / SubStream.cs

...