首页 > 解决方案 > Java 自动保存文本文件的有效方法

问题描述

我正在尝试创建具有“自动保存”功能的文本编辑器。这意味着每当用户对当前文本进行任何更改(例如添加或删除字母、单词、行等)时,该更改也应立即应用于文本文件。

我使用 Javafx 中的“TextArea”控件来检测文本中的任何更改。此外,每当检测到更改时,我都会使用 BufferedWriter 从头开始​​将新文本写入文件。然而,这对我来说似乎不正确,因为 BufferedWriter 将不得不从头开始重写所有文本。如果文本太大,这将导致性能问题。

有没有人对如何实现这个有更好的想法?提前致谢。

标签: javaperformancetext-filesbufferedwriterautosave

解决方案


如果有人在文件开头附近插入或删除,那么无论如何都必须重写大部分文件。

因此,您的策略必须是关于如何使自动保存看起来毫不费力。为此,您可能希望将输出写入线程上的备份文件,并且只有在安全写入该备份时,才将其移至先前的备份。显然,您只能在第一次备份完成后开始记录下一次备份,因此您无法以这种方式记录所有更改。

另一种策略是编写更改日志,当用户选择恢复时可以重新应用这些更改。您可以每隔一段时间编写一个新的完整备份,然后重置日志。该日志可能与您用于撤消/重做的数据相同。


推荐阅读