to powinien to zrobić
var data = new byte[10];
int actualRead;
using (FileStream fs = new FileStream("c:\\MyFile.bin", FileMode.Open)) {
fs.Position = 50;
actualRead = 0;
do {
actualRead += fs.Read(data, actualRead, 10-actualRead);
} while (actualRead != 10 && fs.Position < fs.Length);
}
Po zakończeniu data
będzie zawierać 10 bajtów między plik offset 50 i 60 i actualRead
będzie zawierać liczbę od 0 do 10, co wskazuje, jak wiele bajtów zostały faktycznie czytać (jest to interesujące, gdy plik ma co najmniej 50, ale mniej niż 60 bajtów). Jeśli plik ma mniej niż 50 bajtów, pojawi się EndOfStreamException
.
Tutaj cała zawartość pliku zostanie odczytana, a następnie zostanie użyte tylko 10 bajtów. Niezbyt optymalne podejście :) –
@the_joric Jednak helper, który podał nazwę pliku, zwrócił leniwy 'IEnumerable' w miejsce 'File.ReadAllBytes' byłby skutecznym podejściem, szczególnie jeśli odczytywanie dowolnego przebiegu bajtów z pliku było wspólna potrzeba. –
Richard
nie powinno to być zaakceptowaną odpowiedzią – neo112