Как сравнить с нулевым байтом? - PullRequest
4 голосов
/ 25 марта 2011

Представьте, что я записываю в файл прямо в позицию 1025 байтов, оставляя первые 1024 байта в нуле.

Я хочу открыть файл еще раз и в поиске по позиции первого байта проверить,первый байт равен нулю (не имеет реальных данных)?

Ответы [ 3 ]

4 голосов
/ 25 марта 2011

Как вы ожидаете увидеть разницу между файлом, в котором все 1024 байта записаны как ноль, и файлом, который "не имеет реальных данных"?

Если все, что вам нужно, это проверить, что первые 1024 байта равны нулю, просто прочитайте данные и сравните их обычным способом.

3 голосов
/ 25 марта 2011

То, что вы называете нулевым байтом, не совпадает с нулевой ссылкой в ​​Java.Нулевой байт - это, как правило, байт со всеми очищенными битами, т. Е. 0.

Итак, все, что вам нужно сделать, это прочитать байт и сравнить его с 0. Обратите внимание, что метод read в InputStream возвращаетint, а -1 означает конец файла.

0 голосов
/ 25 марта 2011

Java-байт использует все значения, которые могут быть представлены 8-разрядными битами памяти, в которой он хранится, поэтому места для недопустимого байтового значения по умолчанию не остается, и вы должны выбрать одно самостоятельно (например, - 1, если вы используете только положительные значения). Если вам нужны все байтовые значения, вы можете использовать больший тип данных, например short, для представления недопустимых значений.

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

...