обнаружение двоичных файлов и кодировок символов в zipfiles - PullRequest
1 голос
/ 08 октября 2009

При чтении zip-файлов (с использованием Java ZipInputStream или любой другой библиотеки) из неизвестного источника существует какой-либо способ определения, какие записи являются «символьными данными» (и, если да, кодировкой) или «двоичными данными». И, если это двоичный файл, любой способ определения дополнительной информации (типы MIME и т. Д.)

РЕДАКТИРОВАТЬ происходит ли ByteOrderMark (BOM) в zipentries, и если это так, мы должны сделать специальные операции для него.

Ответы [ 2 ]

1 голос
/ 08 октября 2009

Это в основном сводится к эвристике для определения содержимого файлов. Например, для текстовых файлов (ASCII) должна быть возможность сделать довольно правильное предположение, проверив диапазон значений байтов, используемых в файле - хотя это никогда не будет полностью надежным.

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

Для систем UNIX всегда есть file file , которая пытается определить типы файлов на основе (в основном) содержимого.

0 голосов
/ 10 октября 2009

Возможно реализовать компонент Java, который способен применять правила, определенные в / usr / share / file / magic Я хотел бы иметь что-то подобное. (По сути, вы должны иметь возможность просматривать первые х пару байтов.)

...