5

Когда вы открываете текстовый файл в «Блокноте» в Windows, вы можете переместить исходный файл в корзину или даже полностью удалить его. То же самое верно для WordPad. Почему Windows не выдает предупреждение о том, что файл открыт в другой программе?

Однако если тот же файл открыт в Word, и вы пытаетесь переместить исходный файл в корзину или удалить его навсегда, Windows выдает предупреждение. Само сообщение может быть предупреждением, сообщающим вам, что некоторые (часто не знакомые) программы открывают файл. В случае Word 2013 в Windows 8.1 это информационное сообщение, в котором точно указывается, в какой программе (Word) открыт файл.

блокнот del file открыть блокнот

Это почему? Почему вы можете A) удалить исходный файл, когда он открыт в программе, и B) продолжить работу над документом после удаления файла? Почему в Notepad и WordPad поведение отличается от Word?

Word Del File слово открыть файл

Первый случай поведения существует и в Paint. Вы можете удалить растровый файл, пока он открыт в Paint, и продолжить работу. Но когда вы пытаетесь сохранить его, вам предлагается указать местоположение файла для сохранения. С помощью Блокнота он напрямую сохраняет его в том же месте, где был сохранен исходный файл, и присваивает ему то же имя. Блокнот не просит вас об этом.

Я не проверял это на Windows 7, Vista или XP. Тем не менее, я ожидаю, что поведение будет точно таким же, и поэтому вопрос, вероятно, будет относиться и к этим системам.

2 ответа2

5

Не все программы блокируют файлы при открытии для редактирования

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

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

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

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

Открытие файла без блокировки может быть рискованным

  • Несмотря на то, что просто загрузить файл в память и не прикасаться к нему до тех пор, пока это не понадобится, без блокировки это может привести к состоянию состязания, когда одна программа может редактировать файл без отражения изменений в другой проблеме. Эта другая программа (которая вполне может быть Notepad или Paint) не увидит изменения, и они будут потеряны, когда вы сохраните файл в этой программе.

  • Этот риск состояния гонки является причиной, по которой Microsoft Word (и другие программы Office) блокируют файлы при их открытии. С другой стороны, в качестве примера альтернативного решения Notepad++ не блокирует открытые файлы, поэтому другие программы могут продолжать манипулировать ими. Однако он предупредит пользователя, если обнаружит, что файл был изменен или удален, и попросит пользователя перезагрузить файл с диска или закрыть его соответственно - оба эти действия будут отклонять изменения пользователя.

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .