Евгений |
Отправлено: 15.02.2006, 10:06 |
|
Не зарегистрирован

|
Вопрос этот может иметь множество решений, но всё-таки хотелось бы узнать, как это делается наиболее профессионально.
Описание: приложение сохраняет результаты своей работы в файл. Сохранённый файл можно открывать для просмотра, редактирования и т.д. Но вот такая ситуация: случайно открываем файл, имеющий тоже расширение, но сохранённый совсем другим приложение. Естественно наша программа говорит "фи". Так вот: как распознавать "свой" или "чужой" файл ?
Только не try...catch — потому как файл всё таки может быть сохранён этим приложением, но в процессе записи или какой нить другой операции частично повреждён. Как например файлы картинок могут быть повреждены, но тем не менее откроется какая-то его часть.
Спасибо. |
 |
Grigoriy |
Отправлено: 15.02.2006, 10:20 |
|
Мастер участка
Группа: Участник
Сообщений: 381

|
Ну и какая проблема в этом ?
Я не понимаю тогда, почему так сложно выбрать расширение для своего типа файлов, отличное от других расширений ?
|
 |
Guest |
Отправлено: 15.02.2006, 11:06 |
|
Не зарегистрирован

|
QUOTE |
как распознавать "свой" или "чужой" файл ?
|
Метить, например, вставкой определенной цепочкой байт в определенных местах файла. (вспомните RIFF)
Использовать алгоритм проверки внутренней непротиворечивости данных, соответствующей логике данного типа файла.
А лучше оба сразу — первый говорит о принадлежности, второй позволяет защищать прогамму от некорректных данных и, хотя бы частично, спасать данные. |
 |
Евгений |
Отправлено: 15.02.2006, 11:13 |
|
Не зарегистрирован

|
Дело не в расширении. Выбрать можно. |
 |
Aptem |
Отправлено: 15.02.2006, 16:32 |
|

Мастер участка
Группа: Участник
Сообщений: 349

|
Многие файлы идентифицируются определенным количеством байт в начале ( как и сказал Guest ). Например, в каждом bmp-файле первые два байта это слово bm. В файлах со структурой hdf, первое слово NCSA.
Мне кажется это самый простой и надежный способ идентификации.
|
 |
Евгений |
Отправлено: 16.02.2006, 10:38 |
|
Не зарегистрирован

|
Спасибо за советы. |
 |