场景如下:我使用的是 Windows XP。假设我的桌面上有一个名为 foo.txt 的文本文件。
- 我第一次打开 foo.txt 并开始进行更改但尚未保存,因此记事本程序的状态是文件 foo.txt 在记事本程序中打开并且更改未保存。
- 现在我回到桌面并再次打开 foo.txt,Windows XP 允许我使用旧版本打开 foo.txt,无需任何修改。记事本程序的状态是,在两个不同的记事本程序实例中打开了同一个文件 foo.txt 的两个实例。
- 假设我是个健忘的人,所以我忘记了在 foo.txt 的第一个实例中,我已经做了一些更改。我查看我的电脑,看到第二个实例处于活动状态,然后我开始进行一些更改。现在的状态是,同一个文件有两个实例,我做了不同的修改。现在我保存最新的活动文件(第二个实例)。然后我看到文件的第一个实例仍然处于打开状态。然后我告诉 OMG。所以自然的本能是我再次打开具有最新更改的 foo.txt,然后我尝试合并两个实例的更改。
除了这些之外,Windows 是否可以检测到文件已打开并将我指向已打开的文件并允许我平静地进行更改?
更新:我想知道 Windows 7 是否至少解决了这个问题..但是 Windows 7 中仍然存在这个错误... :(
答案1
我认为错误是与宣传或合理预期* 功能的偏差。微软在 Windows 7 帮助文件中宣传记事本为:
Notepad is a basic text-editing program and it's most commonly used to view
or edit text files.
没有任何广告宣传说某个功能只保留一个打开的文件副本,而我对“基本文本编辑程序”的“合理期望”也不会包含这样的功能。因此,我认为您所描述的内容不能合理地称为“错误”,而应称为“功能请求”。
答案2
这不是一个错误,而是设计使然。
记事本没有锁定文件的概念(与 Word 等“正规”文字处理器不同)。因此,您看到的情况是意料之中的。
记事本实际上仅用于快速编辑简单文本文件(例如 .bat 文件)。如果您需要此类功能,则需要安装并使用类似记事本++。
答案3
听起来你很依赖用记事本来完成重要的工作。这并不明智。记事本不会对其活动文件执行文件锁定,这意味着即使你在记事本中处理文件,任何其他进程都可以自由打开和读取/写入你的文件。
如果这对您来说是一个问题,那么您应该为您的工作找到一个替代的文本编辑器,但实际情况是,自己检查文件是否打开(如果它没有共享并且潜在的网络用户有权访问它)比尝试强制文件锁定更容易。