hottabxp
@hottabxp
Сначала мы жили бедно, а потом нас обокрали..

Как на c# или java читать заголовки файлов?

Как читать информацию о файле? Например, есть форматы файлов - exe,elf,bmp,wbmp, etc. У них своя структура файла или заголовок. Под windows видел много утилит для редактирования PE(exe) файлов, например: для какого процессора данный исполняемый файл, таблица импорта, sizeofcode и т.д
5a87048cc5bf9617900337.png
Как получить доступ к этим полям заголовка на c# или java, при условии, что у меня есть спецификация файла. Можно простенький пример. Спасибо!
  • Вопрос задан
  • 627 просмотров
Решения вопроса 1
jamakasi666
@jamakasi666 Куратор тега Java
Просто IT'шник.
Если есть спецификация файла, значит там описаны и смещения\последовательности\структуры данных внутри.
К примеру описано что есть заголовок в самом начале файла
int version; long size; char[6] name
переведи это в байты и читай в таком количестве а затем прочитанное переводи в int long char. Вот ты его и прочитал.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
На яве есть проект - apache tika tika.apache.org
Как раз для этих целей.
Вот здесь есть туториал https://www.tutorialspoint.com/tika/index.htm
Сама тика поддерживает парсинг текста и метаданных из приблизительно 15к разных форматов.
Ответ написан
Комментировать
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
кхм... "простенький" пример надо ПИСАТЬ... (а лентяям вроде меня - в лом)

спека файла (даже по скрину) - это описание сколько байт (битов) и ЧТО означают

то есть гуглите для начала "чтение бинарных файлов" на нужном вам языке

а вот следующий этап магии - это то что какой то там байт, может иметь значения 1,2,3 (или другие) но каждому значению, согласно спеке (какого то там конкретного формата), может сопоставляться целая строка (а то и абзац текста) пояснения

это вам придется зашивать в прогу (какойнить конфигурационный файл, или встраиваемую БД) - но в любом случае самостоятельно
Ответ написан
Комментировать
@d-stream
Готовые решения - не подаю, но...
Собственно понятия "заголовок" - виртуальное. А общая канва реализации могла бы быть такой:
1. на основании расширения файла делаем предположение о формате
2. читаем блок с начала файла размером предполагаемого заголовка формата
3. сверяем сигнатуру, если таковая подразумевается (например "MZ" в различных вариантах исполняемых файлов, "яШя" в jpeg, "fLaC" у flac, "ID3" у mp3 и т.п.)
4. интерпретируем остальное с контролем валидности, чтобы совершенно случайно текстовый файл курсовой работы, начинающийя с MZ и имеющий расширение .dll не ввел в заблуждение...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы