我正在尝试编写一个用于处理大文件的文字处理器程序。现在,每当用户关闭文件时,如果文件已被修改,我会提示他们“是否要保存文件”。
我正在使用每当用户执行任何写操作时设置的脏位来实现这一点。
但是,这有一个限制,即当文件实际上并不脏时,它会被视为脏文件。例如,如果用户键入一个字符并将其删除,则该文件没有更改。但是我的“脏位”实现认为它已经改变了。
就速度而言,检测文件是否真的发生变化的最佳方法是什么?
对整个文件进行完整的逐位比较太慢了。(比较文件哈希也太慢了,因为需要处理整个文件以计算哈希。在比较值之前先进行长度比较在长度不同时有效,但在长度不同时失败,就像在我的示例中一样以上。)