Восстановить поврежденную zip или gzip файлы?

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

5
задан Liudvikas Bukys 12 September 2008 в 18:44
поделиться

2 ответа

От Bukys Software

Приблизительно 1 в 256 байтах, как известно, повреждается, и повреждение, как известно, происходит только в байтах со значением '\012'. Таким образом, коэффициент ошибок байта является 1/256 (0,39% входа), и 2/256 байта (0,78% входа) является подозреваемым. Но так как только три бита на разбитый байт затронуты, коэффициент битовых ошибок - только 3 / (256*8): 0,15% плохи, 0,29% подозреваемый.

...

Ошибка в сжатом входе разрушает процесс распаковки для всех последующих байтов... То, что распакованный вывод узнаваемо плох так быстро, является причиной для надежды - поиск корректного ответа может определить неправильные ответы быстро.

В конечном счете несколько методов были объединены для успешного извлечения разумных данных из этих файлов:

  • Проблемно-ориентированный парсинг полей и заключенных в кавычки строк
  • Машинное обучение от предыдущих данных с низкой вероятностью повреждения
  • Допуск для файла повреждает из-за других причин (например, диск, полный при входе)
  • Предвидение для руководства поиска вдоль путей самой высокой вероятности

Эти методы определяют 75% необходимых восстановлений с уверенностью, и остаток исследуется highest-probability-first, так, чтобы вероятные реконструкции были сразу определены.

4
ответ дан 14 December 2019 в 19:31
поделиться

Вы могли попытаться писать немного сценария для замены всего CRS с CRLFs (предполагающий, что направление повреждения было CRLF к CR), подкачивая их случайным образом на блок, пока у Вас не было корректного crc. Предполагая, что данные не были особенно большими, я предполагаю, что это не могло бы использовать весь Ваш ЦП до смерти тепла вселенной для завершения.

Как существует определенная информационная потеря, я не знаю, что существует лучший путь. Потерю в CR к направлению CRLF могло бы быть немного легче откатывать.

1
ответ дан 14 December 2019 в 19:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: