Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Prototype777
0 / 0 / 0
Регистрация: 26.03.2013
Сообщений: 21
#1

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

02.07.2014, 18:00. Просмотров 436. Ответов 6
Метки нет (Все метки)

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

Востановить файлы .cpp и .h из проекта с DiskDigger 1.6.0.1571 ? - C++
Не знаю, стоит ли точно этим заниматься. Вчера папа как-то умудрился удалить файлы .cpp и .h из проекта визуал студии 2010. Он хотел...

Как отделить BGI файл от EXE. Как можно внедрить данный модуль в рабочий файл? - C++
Помогите!!! Хотелось бы избавиться от BGI файла и поместить все в рабочий файл. Как это можно следать. Если можно, то поподробнее! ...

Как вывести в файл последние буквы каждого слова в файл? - C++
Помогите, пожалуйста. Задание следующее: сформировать строку из последних букв исходного текста. Текст хранится в файле, нужно взять оттуда...

Файл: Как сделать так, чтобы числа в файл были прописаны не рандомно? - C++
Здраствуйте, дан код: #include "stdafx.h" #include <iostream> #include <fstream> #include <cstdlib> #include <ctime> ...

Файл: Как сделать так, чтобы при запуске программы проверялось, существует ли файл? - C++
Как сделать так, чтобы при запуске программы проверялось, существует ли файл. Если да, то он обнуляется, если нет, то создается?

Потерял cpp файл, а ехе-шник остался. Можно как-то декомпилировать файл обратно? - C++
Потерял cpp файл, а ехе-шник остался. Можно как-то декомпилировать файл обратно?

6
quwy
Native x86
3305 / 2152 / 587
Регистрация: 13.02.2013
Сообщений: 7,156
02.07.2014, 18:07 #2
Цитата Сообщение от Prototype777 Посмотреть сообщение
Объясните с чего начать
С выяснения у преподавателя тех критериев, по которым файл признается "поврежденным".
1
Prototype777
0 / 0 / 0
Регистрация: 26.03.2013
Сообщений: 21
02.07.2014, 18:47  [ТС] #3
Мне попался руководитель не знающий программирования. Он мне мало что объяснил. Насколько я понял то это должно быть так:
Если в файле есть биты которых нельзя прочитать, то их просто надо удалить из этого файла.
Может быть и другой подход.
Эта программа должна восстанавливать файлы, например, из поврежденных оптических дисков ...
0
quwy
Native x86
3305 / 2152 / 587
Регистрация: 13.02.2013
Сообщений: 7,156
02.07.2014, 19:19 #4
Прочитать с игнорированием сбойных участков можно, но тут есть ньюансы.
1. При таком чтении принято не выбрасывать непрочитанную информацию, а заполнять эти места нулями (или другими значениями), чтобы длина файла не изменялась.
2. При сбое чтения с оптического диска непрочитанными окажутся не "биты", а целое число секторов, т.е. 4096 байт и выше.
3. При чтении битого файла операционная система мурыжит его очень долго, пытаясь прочитать много раз, в итоге скорость такого копирования будет ужасающе низкой.

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

Как считать файл построчно записывая в другой файл? - C++
1) Данная программа считывает только первую строку следующие строки она не трогает. Хотел решить данную проблему через while, но не знаю...

Как восстановить поврежденный файл .cdr - Восстановление данных
Доброго времени суток. Возникла следующая проблема: повреждены восстановленные после удаления файлы .cdr. Видны эскизы страниц, (но не...

Как восстановить поврежденный вордовский файл? - MS Word
Здравствуйте! Накрылся очень важный файл, попросили помочь. У самого не получается. Файл был сохранен на флешке и при открытии выдает...

Как восстановить поврежденный файл формата (doc)? - MS Word
У меня огромная проблема. Обычный документ, созданный в Microsoft Office Word 97 - 2003, открыли вордпадом. Он конечно раскрылся каракулями...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru