| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Проверка целостности файлов |
| Автор: davandr 5.6.2006, 00:49 |
| Всем привет. Пишу утилиту для работы с файлами. Возникла такая задачка: необходимо проверять целостность файла, т.е. проверять не поврежден ли он или не испорчен. Пока что я просто пытаюсь скопировать его в другой файл, но думаю, что это не совсем правильно. Хочу узнать вашего мнения. |
| Автор: Sunvas 5.6.2006, 01:02 |
| Можно попробовать поэкспериментровать с контрольной суммой. |
| Автор: Mechanic 5.6.2006, 01:27 | ||
| copy /b filename.ext nul Nul - это такой девайс, который молча съедает всё, что в него суют. А если при чтении возникает ошибка, то она возникает.. А вообще, проще читать файл блоками в память. Только такая проверка - скорее проверка физического носителя.
Ну, типа такого. |
| Автор: Akella 5.6.2006, 08:41 |
| для этого нужно знать формат файла, конкретного каждого файла, иначе как проверить, что у него ДОЛЖНО БЫТЬ "внутри"? А CRC проверяется после копирования, для сравнения 2х копий файла: исходного и скопированного. тоже самое и с Nul - можно выявить преблемы на диске, а не проблемы с внутренностями файла, т.к. скопировается всё, что угодно. К примеру, возьми копию любоого exe-файла, открой его на редактирование (F4) Far`ом, измени там его-нибудь и попробуй запустить. Винда выдаст ошибку, файл неправильный, так сказать, а теперь попробуй этот "неправильный" файл скопировать на дискету, в Nul, всё скопируется, аж бегом |
| Автор: ConstantinXXX 5.6.2006, 21:03 |
| Самое главное определить типизированный файл или нетипизированный |
| Автор: Mechanic 6.6.2006, 22:48 |
Купился.. А вообще, есть очень надёжный способ проверки файла - бинарная сверка файла с его эталонной копией. |
| Автор: Poseidon 7.6.2006, 00:03 | ||
| Задача неподьемная. Почаму?
В общем нужно распознавать формат (и скорее всего распознавать по содержанию, а не по расширению) и проверят в соответствии с форматом, поврежден файл или нет. А это одному не под силу. |
| Автор: Mechanic 7.6.2006, 01:08 | ||
Тогда нужно определиться ещё и с семантикой слова "повреждён".. Можно же предположить, что файл - это нечто объективное, что существует в своем текущем виде независимо от того, как его могли бы [или собираются] интерпретировать. Такой файл есть нормальный, и целостный. Для того, чтобы его повредить, нужно его каким-то образом изменить. Допустим, имеется копия эталонного файла, неповрежденность которой и проверяем. Тогда только сравнением. Если же такой копии нет, и нет данных об изменениях файла, то просто невозможно судить о его корректности. Пример: файл корректен, если он содержит строку в ASCII коде, с терминатором строки CRLF, но содержит неточные координаты южного полюса? И вообще, как можно анализировать данные, формат которых не известен? Этакого TCustomFile? Заметим, в сабже ни слова не сказано, о том, какого рода повреждения необходимо детектить, какого рода данные в файлах, какие есть критерии оценки целостности, .. ничего нет. Что бы здесь терь в каментах не предлагалось, всё будет чистейшей воды демагогией [словоблудием], и субъективными измышлениями... Ну, в лучшем случае - это просто мозговой штурм! |
| Автор: davandr 7.6.2006, 11:30 |
| Подразумевалась всего лишь проверка на возможность чтения файла с физического носителя. Поянятно, что реализовать проверку формата файла - это задача, которую "на арапа" не возьмешь. )) Большое всем спасибо за участие. |