当您在 Windows 的记事本中打开文本文件时,您可以将源文件移至回收站,甚至永久删除它。写字板也是如此。为什么 Windows 没有向您发出警告,抱怨文件已在另一个程序中打开?
但是,如果在 Word 中打开了同一个文件,而您尝试将源文件移至回收站或永久删除它,Windows 会向您发出警告。该消息本身可以是警告类型的消息,告诉您某个(通常未知的)程序已打开该文件。对于 Windows 8.1 上的 Word 2013,这是一条信息消息,告诉您哪个程序(Word)已打开该文件。
这是为什么?为什么你可以 A) 在程序中打开源文件时删除它,并且 B) 在文件删除后继续处理文档?为什么记事本和写字板中的行为与 Word 中的行为不同?
第一种情况也存在于 Paint 中。您可以在 Paint 中打开位图文件时将其删除并继续工作。但是当您尝试保存它时,系统会提示您输入要保存到的文件位置。使用记事本时,它会直接将其保存到与原始文件相同的位置并为其指定相同的名称。记事本不会提示您这样做。
我还没有在 Windows 7、Vista 或 XP 上测试过。不过,我预计行为会完全相同,因此这个问题可能也适用于这些系统。
答案1
并非所有程序都会在打开文件进行编辑时锁定文件
Windows 有两种类型的文件锁:共享锁和独占锁。共享锁允许其他程序读取文件,但拒绝其他程序的写入权限。独占锁完全阻止其他程序访问文件。程序可以根据需要使用任一类型的锁。
程序可以“打开”文件进行编辑,但不能锁定它们。这里真正发生的是该文件被加载到内存的缓冲区中,并且直到再次操作时才会检查文件的状态。以这种方式“打开”的文件实际上并没有被使用,可以由其他程序或系统本身自由操作,这使您可以继续编辑不存在的文件并将其保存到新文件中。
记事本不会锁定打开的文件,这意味着在记事本中打开文件时可以删除该文件,并且程序不会注意到该文件已被删除,直到它尝试再次打开它。同样,画图也不会锁定文件,只有在尝试打开或保存文件时才会注意到该文件已被删除。
另一方面,Word 在打开文档时会锁定文档(编辑:从我的研究来看,似乎只有当 Word 读取或写入文件时,锁才是独占的,否则是共享的)。因此,您无法删除当前在 Word 中打开的文件。
打开文件而不锁定可能会有风险
答案2
这是因为有些程序会复制文件并打开该文件而不是原始文件。这样,您就可以删除原始文件而不会出现错误,因为它未被任何程序使用。