我正在尝试开发一个简单的在线编辑器,允许实时协作(用 Java 编写)。在这个编辑器中,我希望客户能够在任意点编辑源代码(例如,将字母“d”添加到源代码文件的第 11 行第 20 列)。我不确定如何以有效的方式设计这些源代码文件对象,同时仍然允许逐个字母的客户端-服务器同步(类似于 Google Docs 的工作方式)。
我考虑过使用 RandomAccessFile,但在阅读了这篇文章后,我认为这不是一种有效的方法。在文件开头附近插入一个字母将涉及更改其后的所有内容。
我目前的计划是使用 StringBuilder 对象及其插入/删除/追加方法来表示服务器和客户端上的源文件。在服务器端,此 StringBuilder 将根据需要转换为实际文件。
我很好奇是否有更好的方法来解决这个问题。有任何想法吗?