我試圖開發一個簡單的在線編輯器,允許實時協作(用Java編寫)。在此編輯器中,我希望客戶端能夠在任意點編輯源代碼(例如,將字母'd'添加到位於第11行第20列的源代碼文件中)。我不確定如何以有效的方式設計這些源代碼文件對象,同時仍然允許按字母順序的客戶端 - 服務器同步(類似於Google文檔的工作原理)。針對在任意位置編輯的基於文本文件的高效設計?
我考慮使用RandomAccessFile,但在閱讀this post後,我認爲這不是一種有效的方法。在文件的開頭附近插入一個字母會涉及改變它後面的所有內容。
我目前的計劃是使用StringBuilder對象及其insert/delete/append方法來表示服務器和客戶端上的源文件。在服務器端,該StringBuilder將根據需要轉換爲實際文件。
我很好奇是否有更好的方法來解決這個問題。有任何想法嗎?
您可以使用內存塊數據那就是文件(備份不會鬆散數據),然後每隔一段時間將其寫回文件(可能帶有用於回滾的修訂擴展)。 – breezee