Sam*_*mir 5 windows file-management
当您在 Windows 上的记事本中打开文本文件时,您可以将源文件移动到回收站,甚至将其永久删除。写字板也是如此。为什么 Windows 不给你警告,抱怨文件在另一个程序中打开?
但是,如果在 Word 中打开了同一个文件,并且您尝试将源文件移动到回收站或将其永久删除,Windows 会向您发出警告。消息本身可以是警告类型的消息,告诉您某些(通常是 unknwon)程序打开了该文件。对于 Windows 8.1 上的 Word 2013,这是一条信息消息,告诉您究竟是哪个程序 (Word) 打开了该文件。
这是为什么?为什么您可以 A) 删除在程序中打开的源文件,以及 B) 在删除文件后继续处理文档?为什么记事本和写字板的行为与 Word 的行为不同?
Paint 中也存在第一种情况。您可以在位图文件在 Paint 中打开时将其删除并继续工作。但是当您尝试保存它时,系统会提示您输入要保存到的文件位置。使用记事本,它直接将其保存到存储原始文件的相同位置并为其赋予相同的名称。记事本不会提示您这样做。
我没有在 Windows 7、Vista 或 XP 上测试过这个。但是,我希望行为完全相同,因此该问题也可能适用于这些系统。
Windows 有两种类型的文件锁,共享锁和排他锁。共享锁允许其他程序读取文件,但拒绝其他程序的写访问。排他锁可防止其他程序完全访问该文件。程序可以根据需要使用任一类型的锁。
程序可以“打开”文件进行编辑,但不能锁定它们。这里真正发生的是文件被加载到内存中的缓冲区中,并且在再次操作之前不会检查文件的状态。以这种方式“打开”的文件实际上并没有被使用,可以由其他程序或系统本身自由操作,这允许您继续编辑不存在的文件并将其保存到新文件中。
记事本不会锁定打开的文件,这意味着在记事本中打开文件时可以删除该文件,并且程序不会注意到该文件已被删除,直到它再次尝试打开它。同样,Paint 不会锁定文件,只会在尝试打开或保存文件时注意到该文件已被删除。
另一方面,Word 在打开文档时会锁定文档(编辑:根据我的研究,似乎只有当 Word 正在读取或写入文件时,该锁才是独占的,否则会被共享)。因此,您无法删除当前在 Word 中打开的文件。
尽管将文件加载到内存中很简单,除非需要,否则不要触摸它,但这样做不锁定它会带来竞争条件的风险,其中一个程序可能会编辑文件而更改不会反映在另一个问题中。其他程序(很可能是记事本或画图)将看不到更改,当您将文件保存在该程序中时,这些更改将丢失。
这种竞争条件的风险是 Microsoft Word(和其他 Office 程序)在打开文件时锁定文件的原因。另一方面,作为替代解决方案的一个示例,Notepad++不会锁定打开的文件,以便其他程序可以继续操作它们。但是,如果它检测到文件已更改或被删除,它将警告用户,分别询问用户是从磁盘重新加载文件还是关闭文件——这两种操作都会丢弃用户的更改。
归档时间: |
|
查看次数: |
1616 次 |
最近记录: |