Есть ли способ прочитать данные HD после EOF? - PullRequest
2 голосов
/ 01 декабря 2010

Есть ли способ прочитать данные файла, но продолжить чтение данных на жестком диске после конца файла? Для обычного файлового ввода / вывода я мог бы просто использовать fread (), но, очевидно, это будет читать только до конца файла. И было бы полезно, если бы я добавил, что мне это нужно на компьютере с Windows.

Вместо этого все, что я ищу в Google, - это придумывать результаты по не связанным с EOF темам, таким как люди, имеющие проблемы с обычным вводом / выводом.

Моя причина в том, что я случайно удалил часть текста в текстовом файле, над которым работал, и это стоило работы целого дня. Я погуглил кучу вещей для восстановления файлов, но, похоже, все дело в восстановлении удаленных файлов, где моя проблема в том, что файл все еще там, но без какой-либо его информации, и я надеюсь, что некоторые из этих данных все еще существуют напрямую после текущего отмеченного конца файла и не фрагментированного в другом месте или уже заявленного или иным образом перезаписанного. Поскольку я не могу найти программу, которая помогает с этим конкретно, я надеюсь, что смогу быстро что-то исправить для этого (я понимаю, что, в зависимости от того, что вовлечено, это может быть не так выполнимо, как просто переделать работу, но Я надеюсь, что это не так).

Насколько я могу предвидеть, хотя я могу быть не прав (не уверен, поэтому и прошу помощи), есть 3 варианта.

Наихудший из трех: мне нужно поискать функции Windows API, которые обеспечивают прямой доступ ко всему жесткому диску (возможно, аналогично его функциям для памяти, - тем, с которыми у меня есть опыт работы), и отсканировать все это на предмет данных, которые У меня все еще есть доступ к файлу, а затем просто продолжаю смотреть на то, что после него.

Во-вторых: я могу получить указатель на файл, тогда мне все еще нужно получить необработанный доступ к HD, но, по крайней мере, в нем есть указатель на файл?

Лучшее из трех: просто откройте файл для доступа к записи, выполните поиск до конца, а затем запишите способы, которые позволят EOF получить больше места, но сначала надейтесь, что Windows не очистит данные, прежде чем передать их мне. так что я получаю мусорные данные, которые были предыдущими данными в этом месте, которые на самом деле будет то, что я ищу? Это было бы здорово, если бы это было так просто, но я боюсь проверить это, потому что я потерял бы данные, если бы это не удалось, так что, надеюсь, кто-то уже знает. Данный компьютер работает под управлением Vista Home Premium, если это важно для любого, кто знает мрачные детали Windows.

Любой из этих трех кажется правдоподобным? Да или нет, я также открыт (и стремлюсь) к другим предложениям, особенно к тем, которые лучше моих глупых идей, и особенно если они ориентированы на конкретные функции, которые можно использовать для выполнения работы.

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

Заранее благодарим за любую помощь.

Ответы [ 2 ]

3 голосов
/ 01 декабря 2010

Вы должны получить утилиту для сканирования свободного места на жестком диске и восстановления с него данных, например, PhotoRec или foremost. Тем не менее, обратите внимание, что если вы вообще много пользуетесь машиной (даже веб-браузером, который создаст файлы в вашем кэше), данные, вероятно, уже были перезаписаны. Не сохраняйте инструменты восстановления на том же жестком диске и даже не используйте один и тот же компьютер для их загрузки; получить их с другого компьютера и сохранить их на USB-устройстве, а затем запустить их с этого устройства.

Что касается концептуального содержания вашего вопроса, файлы являются абстрактными объектами. Не существует такой вещи, как данные «прошлого eof», кроме (в зависимости от реализации), возможно, вплоть до следующего кратного «размер блока» файловой системы / диска. Также возможно (очень вероятно), что ваш редактор "сохранил" файл, обрезав его и записав все заново с самого начала, что означает, что между старым и новым хранилищем необязательно какое-либо соответствие.

0 голосов
/ 01 декабря 2010

Ваш вопрос не имеет большого смысла - по определению в файле ничего нет после EOF. Из вашего дальнейшего описания кажется, что вы хотите прочитать все, что происходит на диске, после последнего байта, используемого файлом, который может быть случайным мусором (неиспользуемым пространством) или другим файлом. Но в любом случае, это не «данные после EOF», а просто данные на диске, который не является частью файла. Возможно даже, что это может быть какая-то другая часть того же файла, если файловая система выкладывает свои данные таким образом - некоторые файловые системы разбрасывают блоки по-видимому случайным образом по всему диску и выясняют, какие байты принадлежат каким файлам, требует понимания метаданные файловой системы.

...