/ / Strumień z pola pliku w C # - c #, io, filestream

Strumień z pola pliku w C # - c #, io, filestream

Mam funkcję strumieni (jeden do wprowadzania iinny dla danych wyjściowych) jako parametry. Jest to funkcja kryptograficzna, więc strumienie mogą być bardzo duże. Ale strumień, ta funkcja nie wymaga całego pliku, to pole pliku. Więc jak mogę umieścić pole pliku (może być bardzo duże, więc nie ma MemoryStreams itp.) W strumieniu? Przepraszam za mój zły język angielski.

Odpowiedzi:

0 dla odpowiedzi № 1

Jeśli masz na myśli, że chciałeś dostarczyć strumień, który jest część pliku (lub dowolnego innego Strumienia), wtedy zwykle używasz jednego z dwóch podejść:

  • utwórz podstrumień: Klasa strumienia, która hermetyzuje (dekoruje) wewnętrzny strumień i śledzi, ile danych zostało odczytanych, i pozwala tylko na odczyt bajtów „n” (dostarczonych w konstruktorze), a po zwróceniu zwróci 0 z odczytu (pamiętając również o Maxie żądane bajty i pozostałe bajty podczas odczytu)
  • napisz swój kod, aby wewnętrznie śledził dane w stosunku do pewnego limitu i po prostu nigdy nie przesadzał z odczytem

Pierwszy jest przydatny, jeśli musisz przekazać ten strumień do wcześniej istniejącego kodu / bibliotek.

W obu przypadkach IMO kod konfigurujący strumień powinien martwić się o dane „przed”, a powyższe po prostu martwi się, że nie będzie czytał zbyt wiele.

Edycja: oto ten, który napisałem wcześniej: http://protobuf-net.googlecode.com/svn/branches/v1/protobuf-net/SubStream.cs