двоичные форматы файлов: нужно исправлять ошибки? - PullRequest
2 голосов
/ 27 мая 2010

Мне нужно сериализовать некоторые данные в двоичном формате для эффективности (журнал данных, где файлы размером 10-100 МБ типичны), и я прорабатываю детали форматирования. Мне интересно, если реально мне нужно беспокоиться о повреждении файла / исправление ошибок / и т.д.

В каких случаях может произойти повреждение файла? Должен ли я строить устойчивость к коррупции в моем двоичном формате? Или я должен обернуть свой поток байтов, не подверженный повреждению, каким-то кодом с исправлением ошибок? (есть предложения? Я использую Java) Или мне просто не стоит об этом беспокоиться?

edit: предварительный двоичный формат, как он у меня сейчас есть, содержит кучу сегментов переменной длины, поэтому я немного обеспокоен тем, что если у меня когда-нибудь будет повреждение данных, то после чтения его обратно, Я могу выйти из синхронизации и не могу восстановить + Я теряю оставшуюся часть файла.

Ответы [ 4 ]

2 голосов
/ 27 мая 2010

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

EXE не имеют исправления ошибок, в то время как изменение одного бита может иметь радикальные последствия.

Если файл должен быть передан по TCP, вы можете предположить, что ошибок не будет.

1 голос
/ 27 мая 2010

Вас могут заинтересовать примечания о кодах обнаружения ошибок в HDF5 . Где и какая контрольная сумма зависит от того, как вы осуществляете доступ к данным и обновляете их, а также от того, какой полезный блок выявляет ошибка.

1 голос
/ 27 мая 2010

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

0 голосов
/ 10 июля 2010

Я пошел с системой кодирования Рида-Соломона. Существует довольно простая в использовании реализация Java этого в Java в библиотеке Google zxing .

...