FileStream.Read (...): Я когда-нибудь получу клев, а не байт? - PullRequest
1 голос
/ 18 июня 2010

Я делаю ряд побитовых операций над массивом байтов в C #. Я получаю массив путем вызова FileStream.Read. Я только что понял, что не уверен, что произойдет, если в файле будет плохой байт или поврежденный байт. Например, может быть отрублен кусок куска или что-то в этом роде. Что FileStream сделает с этим? Будет ли испорченный байт «округляться» методом чтения? Будет ли исключение? Или это то, что практически никогда не произойдет?

Спасибо, Брайен

1 Ответ

4 голосов
/ 18 июня 2010

Если ваш FileStream.Read вызов успешен, не существует такого файла, как файл, имеющий плохой байт или поврежденный байт. Каждый байт, который успешно считывается, и часть файла, имеет значение от 0 до 255. То, как оно интерпретируется программой, имеет значение.

Если FileStream.Read возвращает, например, 5 байтов, то вы можете полагать, что эти 5 байтов успешно прочитаны из файла и все биты байтов были успешно помещены в ваш буфер.

Существует такая вещь, например, как сбойный кластер на вашем жестком диске, и в этом случае чтение будет завершено с некоторым исключением.

Для полноты я также должен упомянуть, что каждый тип файла имеет формат файла. То есть как вы должны интерпретировать двоичные данные. Возможно, что байт или несколько байтов не соответствуют формату файла. Таким образом, вы можете рассматривать байт как поврежденный или недействительный, но он не является действительно поврежденным или недействительным, просто неправильным с точки зрения формата файла.

...