Назад | Перейти на главную страницу

В системах Windows переименование файлов функционально похоже на их удаление?

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

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

Во время этой операции система регрессировала и не могла правильно работать. Поэтому был вызван поставщик услуг, который написал руководство. Их диагностика заключалась в том, что база данных была повреждена из-за того, что параллельно находились 2 базы данных, указывающие на «folder_backup» как на вторую базу данных. Насколько я понимаю, файлы внутри «D: / folder_backup» были бы инертными, за исключением исключительного случая, когда программа ищет папки, начинающиеся с «folder», или читает все содержимое файла «D: /».

Каким непонятным образом система может получить доступ к переименованному файлу, что в противном случае было бы невозможно, если бы файл был удален?

Действительно избалован выбором.

Переименованный файл все еще может быть доступен другой программе.

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

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

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