2015-04-09 2 views
1

Скажем, я копирую или создаю файл foo.txt по пути a/b/c. Пока он копируется, можно ли переименовать любую часть пути. Я попробовал сменить c (непосредственный родитель), но он попадает в Access denied, а переименование b работает. Почему так? И, допустим, если я копирую 2 файла foo1 и foo2 в один и тот же каталог в файловой системе Windows одновременно; это повлияет на производительность любого? В качестве альтернативы, будет ли какой-либо процесс копирования заблокировать папку? Если да, то на каком уровне?Windows File/Directory Lock

ответ

1

В самой файловой системе нет ничего, что помешает вам переименовать a, b или c во время записи в файл foo.txt. Я подозреваю, что утилита, которую вы используете, открыла папку с доступом, которая запрещает другим процессам записывать или удалять доступ к самой папке (которая не имеет ничего общего с файлами в ней).

В NTFS переименование папки (или даже перемещение ее где-то на том же томе) не приводит к изменению идентификатора папки. Я предполагаю, что утилита открывает (самую личную) папку, чтобы предотвратить ее удаление из-под нее. Разумное, защитное поведение.

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

+0

Спасибо! По тому же объему вы имеете в виду тот же жесткий диск. Правильно? – ptntialunrlsd

+1

Подумайте об объеме == букву диска. Физический жесткий диск можно разделить на несколько томов. Если у вас есть C: и D: на одном и том же физическом диске, то перемещение файлов с C: на D: пересекает границу тома, и это будет barf в вашем сценарии. – Clay

+0

Хорошо. Это потому, что отдельные тома будут иметь отдельные разделы, а перемещение файлов по томам будет действительно перемещаться, а не просто менять указатели? – ptntialunrlsd

Смежные вопросы