Как файловые менеджеры определяют тип файла?

Тема в разделе "WASM.HEAP", создана пользователем osrootd, 9 дек 2008.

  1. osrootd

    osrootd New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    1.086
    Вот щас задачку дали - один проект доработать. Там прога - обмен доками по протоколу передачи файлов поверх HTTP
    Ну короче требуется встроенный проводник, но так чтобы иконки показывал в зависимости от типа документа

    Блин, кроме заголовочного файла formats.h, в котором строки

    unsigned char format_tar_gz[] = {0x1f,0x8b,0x08};
    unsigned char format_pdf[] = {0x25,0x50,0x44,0x46};

    и так по каждому типу,

    я больше ниче не придумал.
    Ну то есть читаем заголовок у файла, определяем, чему соотв. и показываем нужную иконку.

    А может есть иные методы?
     
  2. meduza

    meduza New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    212
    По расширению, если есть возможность. Если нет - то по сигнатурам, иначе никак.
     
  3. osrootd

    osrootd New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    1.086
    его может не быть. Это - часть имени. Кроме того, разработка кроссплатформенная (mac, *nix, windows). То есть в некоторых системах вообще нету расширения.
     
  4. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    В таком случае, как сказал meduza - остается парсить сигнатуры
     
  5. osrootd

    osrootd New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    1.086
    Кстати, Konqueror еще по структуре умеет. То есть может отделить HTML от PHP, с++ от Java. Вот сюда копать надо. А то я сижу щас с hex-редактором, смотрю форматы файлов. По любому какой то еще метод есть
     
  6. meduza

    meduza New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    212
  7. osrootd

    osrootd New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    1.086
    Скажите пожалуйста, чем xls от doc отличается?

    Уже 5 файлов сравнил, проводил difference, но не могу понять.
     
  8. osrootd

    osrootd New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    1.086
    Нет, по структуре!
    Попробуйте по сигнатуре отличить ELF приложение от объектного файла!
     
  9. osrootd

    osrootd New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    1.086
    Есть такая утилита - file
    Она знает более 100 форматов.

    Но как сказать гуглу что я хочу скачать file?
     
  10. meduza

    meduza New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    212
    osrootd
    она же в "стандартный набор" unix входит, че ее искать.
     
  11. osrootd

    osrootd New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    1.086
    У меня сорцов нету
     
  12. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Чего вы мудрите, в винде есть функции для получения иконки, ассоциированной с файлом.
     
  13. meduza

    meduza New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    212
    K10
    позволю себе ответить за osrootd: "...Кроме того, разработка кроссплатформенная (mac, *nix, windows)..."
    osrootd
    http://archive.ubuntu.com/ubuntu/pool/main/f/file/file_4.24.orig.tar.gz
     
  14. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    ааа... Ну может линух и мак это тоже умеют?
     
  15. osrootd

    osrootd New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    1.086
    Щас буду разбираться с сорцами file

    Файлы по-любому читать придется. Как лучше: по очереди или с помощью Treads?


    P.S.: у нас тут война в оффисе: qt vs java:)
    на QT (c++) получить адрес файла - 20 строк, а на java - 4
    На QT прочитать файл и показать - 50 строк, на Java - 115.
     
  16. meduza

    meduza New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    212
    osrootd
    конечно, а ты как думал.
    Я бы делал по очереди; сравнение с простыми сигнатурами (даже с оч. большим количеством) происходит довольно быстро.
     
  17. osrootd

    osrootd New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    1.086
    Не, я хочу crystalSVG везде чтоб было, не зависимо от платформы.

    P.S.: На данном этапе прога рисует иконки тольку у pdf и архивов.
     
  18. osrootd

    osrootd New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    1.086
    Ну... благодаря этой утили все встало на свои места
     
  19. osrootd

    osrootd New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    1.086
    Я еще раз спрошу:

    Чем отличаются документы формата xls от формата doc???
     
  20. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    Мало чем. Сигнатура одна и также. Одно хорошее отличие - в документе есть строка:
    Для doc: Microsoft Word
    Для Excel: Microsoft Excel
    А так эти файлы внемне слабо отличаются.

    В атаче - мои доки по сигнатурам (так и знал что пригодятся!).