java - Java 自动保存文本文件的有效方法
问题描述
我正在尝试创建具有“自动保存”功能的文本编辑器。这意味着每当用户对当前文本进行任何更改(例如添加或删除字母、单词、行等)时,该更改也应立即应用于文本文件。
我使用 Javafx 中的“TextArea”控件来检测文本中的任何更改。此外,每当检测到更改时,我都会使用 BufferedWriter 从头开始将新文本写入文件。然而,这对我来说似乎不正确,因为 BufferedWriter 将不得不从头开始重写所有文本。如果文本太大,这将导致性能问题。
有没有人对如何实现这个有更好的想法?提前致谢。
解决方案
如果有人在文件开头附近插入或删除,那么无论如何都必须重写大部分文件。
因此,您的策略必须是关于如何使自动保存看起来毫不费力。为此,您可能希望将输出写入线程上的备份文件,并且只有在安全写入该备份时,才将其移至先前的备份。显然,您只能在第一次备份完成后开始记录下一次备份,因此您无法以这种方式记录所有更改。
另一种策略是编写更改日志,当用户选择恢复时可以重新应用这些更改。您可以每隔一段时间编写一个新的完整备份,然后重置日志。该日志可能与您用于撤消/重做的数据相同。
推荐阅读
- python - python中if语句中的值错误。太多值需要解压
- c# - 如何在选择列表中进行不显眼的 Ajax 调用?
- database - MemSQL - 如何在子查询中修复与孩子的联合
- java - 从总工资和工资税中找到净工资
- python - 初始化套接字对象
- uikit - 如何在swiftUI中检测摇晃手势
- php - Laravel - 转义除标签之外的所有 HTML 字符
- json - database.yml 上的 Yaml 到 JSON 转换跳过了一些特殊功能
- c# - 如何在 Outlook 2016 的邮件项目的上下文菜单中捕获右键单击事件?
- sql - 在 Group By Function 中使用 TO_CHAR 与数据类型不匹配。甲骨文 SQL