grAn2an
Окт. 29, 2009 23:00:32
доброго времени суток
нужна помощь в решении следующей задачи:
есть файл довольно большого размера, например 5 гигабайт,
файл бинарный, по сути содержит внутри кучу других файлов, разделенных определенной “меткой”, например “FILE”,
собственно вопрос как его порезать по этим “меткам”?
как я понимаю считать его в строку и провести поиск рег.выр. не самая лучшая идея, учитывая размер…
считывать по-байтно и строить поиск самому(как я понимаю нечто вроде конечных автоматов) вроде как вариант, но может есть более простые или стандартные пути решения?
Lexander
Окт. 30, 2009 00:10:31
Судя по всему, внутренние файлы - разного размера. И бинарный контейнер - не упорядочен. Поэтому стандартные методы не будут иметь смысла, обычно заключенного в повышении скорости обработки.
Поэтому работать таки придется побайтно. Единственное, что могу посоветовать в этом случае - работать не с символами, а с кодами символов - будет немного быстрее (нет потери времени на преобразование). Но я не в курсе, есть ли библиотеки, которые позволяют работать на таком низком уровне.
Но я бы сначала все таки проверил, может быть, бинарный файл имеет четкую структуру (а не поток с единственными метками - начало блока). Тогда нужно обрабатывать файл в соответствии с этой структурой.
grAn2an
Окт. 30, 2009 00:27:09
к сожалению описание четкой структуры неизвестно,
известна лишь часть структуры, метки начала и конца файла (засада в том что между метками конца и начала следующего файла как раз неизвестные структуры) но то что известно - достаточно для поиска и извлечения…
но опять же такого размера файлы - страшно прикасаться :(
Lexander
Окт. 30, 2009 11:55:29
Бинарный файл от какой-то известной программы? Если так, попытайся найти его формат в сети.