Как именно заблокированные файлы обрабатываются ОС?
Или, если быть точным, почему иногда я не могу удалить заблокированный файл из проводника Windows, но если я открою командную строку в указанном каталоге, я могу удалить его оттуда?
Когда процесс открывает дескриптор файла или каталога, он указывает, какой уровень общего ресурса ему нужен. Уровень общего доступа может быть любой комбинацией флагов FILE_SHARE_DELETE, FILE_SHARE_READ и FILE_SHARE_WRITE. Названия флагов довольно очевидны. Если я укажу FILE_SHARE_READ, это позволит другим процессам читать файл, FILE_SHARE_WRITE позволяет другим процессам записывать файл (возможно, меняя его у меня под ногами), а FILE_SHARE_DELETE позволяет другим процессам удалять файл (хотя я думаю, что он не удаляется до тех пор, пока после закрытия дескриптора файла).
В любом случае, если какой-либо процесс открывает дескриптор файла и делает не укажите FILE_SHARE_DELETE, это означает, что никакой другой процесс не может удалить файл, пока первый процесс не закроет его дескриптор. Это обычная причина появления ошибок типа «файл заблокирован другим процессом». Обратите внимание, что процессы также могут открывать дескрипторы каталогов, поэтому это также относится к удалению каталогов, даже если они пусты.
Что касается того, почему вы можете удалить файл из командной строки, когда вы не можете удалить его из проводника, я не понимаю, почему это могло произойти. Мне нужно увидеть это собственными глазами.
JR
Джон прав ... вы не можете удалить файлы, которые используются, потому что ... они уже используются. По той же причине вы не можете менять шины, когда едете на работу. Происходят всевозможные неожиданные вещи.
Если вы хотите знать, какой процесс использует файл (чтобы вы могли временно убить процесс, чтобы он снял блокировку с файла, используйте Обозреватель процессов из Microsoft / Sysinternals.
Если файл используется Windows, вы можете использовать MoveOnBoot от Gibin Software, чтобы удалить заблокированный файл после перезагрузки.
Я предполагаю, что у вас есть какое-то стороннее расширение в проводнике, которое ненадолго открывает файл для сканирования файла, заставляя проводник заблокировать его. Эта проблема возникает только у файлов большего размера? Блокировки - это блокировки в мире Windows, никакая командная строка не может удалить заблокированный файл (хотя, как отмечалось выше, есть способы закрыть блокировку, а затем удалить файл)