Форум программистов, компьютерный форум CyberForum.ru

Как востановить поврежденный файл - C++

Восстановить пароль Регистрация
 
Prototype777
0 / 0 / 0
Регистрация: 26.03.2013
Сообщений: 21
02.07.2014, 18:00     Как востановить поврежденный файл #1
На летнюю практику надо написать программу, которая проверяет если не поврежден файл, если поврежден то восстанавливает его. Язык программирования С + + или С #. Объясните с чего начать, потому что не понимаю по какому принципу проверяется, і восстанавливается файл.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2014, 18:00     Как востановить поврежденный файл
Посмотрите здесь:

Дан файл целых чисел. Создать новый файл, содержащий те же элементы, что и исходный файл, но в обратном порядке C++
Текстовый файл UTF-8 сохранить как текстовый файл ANSI C++
C++ Как отделить BGI файл от EXE. Как можно внедрить данный модуль в рабочий файл?
Как из С++ передать данные в текстовый файл? и как читать текстовые файлы в С++? C++
Даны натуральное , символьный файл и текстовый файл . Файл содержит 30 слов , каждое из которых будем называть ключевым C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
quwy
Native x86
 Аватар для quwy
2734 / 1823 / 477
Регистрация: 13.02.2013
Сообщений: 6,110
02.07.2014, 18:07     Как востановить поврежденный файл #2
Цитата Сообщение от Prototype777 Посмотреть сообщение
Объясните с чего начать
С выяснения у преподавателя тех критериев, по которым файл признается "поврежденным".
Prototype777
0 / 0 / 0
Регистрация: 26.03.2013
Сообщений: 21
02.07.2014, 18:47  [ТС]     Как востановить поврежденный файл #3
Мне попался руководитель не знающий программирования. Он мне мало что объяснил. Насколько я понял то это должно быть так:
Если в файле есть биты которых нельзя прочитать, то их просто надо удалить из этого файла.
Может быть и другой подход.
Эта программа должна восстанавливать файлы, например, из поврежденных оптических дисков ...
quwy
Native x86
 Аватар для quwy
2734 / 1823 / 477
Регистрация: 13.02.2013
Сообщений: 6,110
02.07.2014, 19:19     Как востановить поврежденный файл #4
Прочитать с игнорированием сбойных участков можно, но тут есть ньюансы.
1. При таком чтении принято не выбрасывать непрочитанную информацию, а заполнять эти места нулями (или другими значениями), чтобы длина файла не изменялась.
2. При сбое чтения с оптического диска непрочитанными окажутся не "биты", а целое число секторов, т.е. 4096 байт и выше.
3. При чтении битого файла операционная система мурыжит его очень долго, пытаясь прочитать много раз, в итоге скорость такого копирования будет ужасающе низкой.

Добавлено через 13 минут
Алгоритм простой:
Код
Открываем входной файл;
Открываем выходной файл;
Пока не достигнут конец входного файла, цикл
  Читаем 512 байт из входного файла;
  Если считано больше 0 байт, то
    Записываем эти байты в выходной файл;
    Прибавляем количество считанных байт к счетчику прочитанных байт;
  Иначе
    Записываем в выходной файл нули в количестве Min(512, Размер исходного файла - Счетчик прочитанных байт);
    Перемещаем файловый указатель входного файла вперед на ту же длину Min(512, Размер исходного файла - Счетчик прочитанных байт);
    Прибавляем Min(512, Размер исходного файла - Счетчик прочитанных байт) к счетчику прочитанных байт;
Конец цикла;
Закрываем входной файл;
Закрываем выходной файл;
Prototype777
0 / 0 / 0
Регистрация: 26.03.2013
Сообщений: 21
02.07.2014, 20:10  [ТС]     Как востановить поврежденный файл #5
Спасибо
SmashDream
38 / 30 / 11
Регистрация: 09.06.2012
Сообщений: 144
03.07.2014, 08:58     Как востановить поврежденный файл #6
Любой файл с точки зрения программы - это набор байтов.
Соответственно самой программе сильно пофиг сколько и какие это байты. Не пофиг алгоритму, который с файлами работает. Соответственно файл считается поврежденным если он не соответствует задуманному стандарту. Иными словами в алгоритм должно быть заложено знание того каким быть должен не поврежденный файл. Вопрос комплексный.
Если задача определить возможность физического повреждения носителя, то надо боольше курить мануалов D:
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.07.2014, 20:25     Как востановить поврежденный файл
Еще ссылки по теме:

Востановить файлы .cpp и .h из проекта с DiskDigger 1.6.0.1571 ? C++
C++ Как сохранить контейнеры STL в файл. И как потом их прочитать из файла
Как считать файл построчно записывая в другой файл? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Prototype777
0 / 0 / 0
Регистрация: 26.03.2013
Сообщений: 21
05.07.2014, 20:25  [ТС]     Как востановить поврежденный файл #7
Цитата Сообщение от quwy Посмотреть сообщение
Если считано больше 0 байт, то
А как это проверить?
Если можно код.
Yandex
Объявления
05.07.2014, 20:25     Как востановить поврежденный файл
Ответ Создать тему
Опции темы

Текущее время: 05:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru