Jump to content

Как перезаписывается файл после редактирования?


Hazar
 Share

Recommended Posts

Расскажите, пожалуйста, как перезаписывается на HDD файл после открытия и редактирования его в программе-редакторе?

То есть, меня интересует, файл полностью перезаписывается в другое место (как бы заново создается) или неизменённые данные остаются в прежних кластерах?

Или если такой вариант: файл ДОписывается, что будет в этом случае?

---

<Уважаемые модераторы, долго думал в какой раздел задать этот вопрос. Прошу извинить, если определился неверно>

Link to comment
Share on other sites

Файл перезаписывается поверх существующего, те восстановить его прежнее состояние невозможно, разве что сохранять его с использованием пункта меню "Сохранить как...", данный пункт меню имеется практически во всех редакторах любых типов файлов.

Link to comment
Share on other sites

Hazar:

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

Link to comment
Share on other sites

Честно говоря, точно не знаю, но давай подключим логику.

То есть, меня интересует, файл полностью перезаписывается в другое место (как бы заново создается) или неизменённые данные остаются в прежних кластерах?

Для того, чтобы действовать по схеме "неизменённые данные остаются в прежних кластерах" надо найти эти самые неизмененные данные. Кроме того, измененные данные надо выровнять по размеру кластера, чтобы неизмененные данные в кластере не сдвинулись. Все это достаточно дорогостоящие операции, и заниматься ими особого смысла я не вижу. Поэтому логичнее было бы просто записать данные на диск, пометив старые кластеры как неиспользуемые.

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

Или если такой вариант: файл ДОписывается, что будет в этом случае?

Старые данные не трогаются, просто новые дописываются в конец.

Link to comment
Share on other sites

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

Файл перезаписывается заново, хотя и не обязательно в другое место, особенно начало файла (есть такая функция, как открывание существующего файла на запись содержимого заново, она, во всяком случае, в простой FAT, сохраняла позицию начала файла, обнуляя его длину, а затем для записи в файл выделялись первые следующие за начальным кластером свободные на данный момент, возможно, не соседние, кластеры). Правда, со времен простой FAT много воды утекло... Уже начиная с Windows, появилась оптимизация распределением не просто кластеров, а цепочек последовательных кластеров с целью уменьшить фрагментацию. Появились виртуальные кластеры, фиктивные (sparse) кластеры и пр., например, запись коротких файлов NTFS прямо внутрь каталога файлов. Так что теперь все это наверняка зависит от файловой системы и применяемой операционной системой стратегии распределения памяти, от того, какими командами пользуется для записи файлов программа, от длины файлов, даже может зависеть от содержания выводимых данных (цепочки нулей могут заменяться фиктивными кластерами).

Так что на пути от команды перезаписи файла до конкретных секторов диска стоит много всяких оптимизаций, которые могут менять положение данных на диске.

Edited by Тролль
Link to comment
Share on other sites

Shurr, спасибо за логику! :)

Тролль, спасибо за дебри! :)

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

У меня даже была такая мысль (может вам смешной покажется) провести опыт:

снять как-бы "кластерный" образ диска, затем отредактировать некий файл, снова обаз, и потом сравнить.

Но это так лишь, потеоритизировать. Поскольку, задача это наверное чрезвычайно трудоёмкая, да и тем более я не представляю себе как это можно сделать. :) Наверное с помощью DiskEdit или чего-то подобного?

В любом случае я к таким экспериментам ещё не готов.

Link to comment
Share on other sites

Если потеоретизировать... то насколько мне известно, если вбросить на диск, или в папку файл с именем, которое там уже есть, то есть, заместить файл, то имя файла в оглавлении диска будет числиться за другим файлом, а место, которое занимал старый файл, будет считаться системой пустым. Новый файл может записаться на место старого, либо на другое место, тут уж как решит система.

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

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...