![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| ezekiel |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 30.6.2012 Репутация: нет Всего: нет |
Добрый день, собственно появилась задача - в винде открывать файлы различных форматов и затем производить писк по ключевым словам в теле файла.
Так как необходимо работать с весьма различными по свое структуре форматами (.djvu,.pdf, файлы офиса от MS) возникают вопросы следующие: 1) Каким образом лучше определять форматы файла? Т.е. я понимаю, что необходимо открывать на бинарное чтение файлы, считывать определенное количество инфы, анализировать ее (например сравнивать с уже имеющимися масками заголовков для распространенных файлов) тем самым определяя формат. Но нет ли уже готового решения, например библиотеки какой под эти нужды? или лучше поковыряться в линуксовом file? 2) Опять таки, писать классы с нуля для работы под каждый формат - желание отсутствует. Есть ли какая-нить библиотека по работе с большим количеством, скажем так текстовых форматов, или все таки придется искать примочки для работы с каждым отдельным форматом? |
|||
|
||||
| Amp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 3 Всего: 17 |
1. Как хочешь, определить файл по сигнатуре труда не составляет. С бинарными файлами от MSO правда чуть сложнее.
2. На бесплатные библиотеки, работающие с большим кол-вом форматов не натыкался. Есть такая штука Beagle - линуксовый аналог Windows Search. Там реализован поиск по распространенным форматам, можно покопать исходники (на C#). Но на универсальную библиотеку я бы особо не надеялся. Впрочем в Windows же есть всякие ActiveX-ы, что может упростить жизнь. |
|||
|
||||
| izl3sa |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 25.6.2010 Репутация: нет Всего: нет |
в юниксах есть команда file (http://gnuwin32.sourceforge.net/packages/file.htm) которая умеет то, что тебе нужно. Под виндой собирается нормально и довольно большая база, выдрать функционал не сложно. Но есть некоторые проблемы - к примеру docx это zip архив в котором валяются xml файлы и всякие ресурсы. Либа эта скажет только про zip архив. Впрочем сюда конечно можно прикрутить всякую эвристику.ыы
|
|||
|
||||
| EvilsInterrupt |
|
||||
|
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: 2 Всего: 9 |
izl3sa,
Твои :
автор топика уже предвидел и описал в своем первом посте, вот цитата:
Добавлено через 1 минуту и 36 секунд ezekiel, Также рекомендую посмотреть и clamav , ведь вредоносный код можно сунуть в любой файл так сказать эксплоит ;) |
||||
|
|||||
| Amp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 3 Всего: 17 |
С определением вручную все не сильно сложно. djvu и pdf имеют сигнатуры. doc, xls, ppt - по сигнатуре отличить друг от друга нельзя, это compound document форматы. Придется прочитать заголовок и получить список потоков внутри файла - по ним уже можно определить с чем конкретно имеешь дело. Та же петрушка с docx, xlsx и pptx - тип файла определяется по файлам внутри архива.
|
|||
|
||||
| ezekiel |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 30.6.2012 Репутация: нет Всего: нет |
Вау))
не ожидал такого количества ответов...) Пойду тестить варианты, но как говорится, направление коллективной мысли уловил) Ждите еще вопросов) |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |