2010-01-31 38 views
3

我想使用一種算法來減少用於保存特定文本文件的內存。我真的不知道文本如何存儲,但我有一個想法心神。我想改變在任何文本編輯器內部表示文本的方式

擴展一個開源的文本編輯器(如果是,而不是哪一個)或者自己編寫一個文本編輯器會更好嗎?

如果有人也可以給我一個鏈接或教程來介紹文本編輯器的工作方式以及數據存儲方式,那將會很好。

編輯補充

爲了澄清,我想要做的是,而不是保存Word的副本做一個哈希表,並存儲在需要放置它的地址。

這樣我就不會存儲重複。

這將變得特定於特定的文本編輯器。

更新

感謝大家我得到了一切,你會想說。無論如何,我所要做的就是不用保存一個單詞的重複項,而是將它存儲在需要放置的地方。

這是我不會存儲重複。

是的,這將成爲特定的文本編輯器。從來沒有意識到。

回答

11

我想用一個算法來減少用於保存特定的文本文件

如果你這樣做,你將不再有一個文本編輯器,內存,而是你創造了某種二進制文件編輯器

文本文件格式的要點在於它是通用的,這意味着任何文本文件都可以在任何其他文本編輯器中打開。

3

文本基本上按原樣存儲。即每個字符佔用一個字節或兩個字符(寬字符),並且在保存時不會對其進行任何轉換。它可能會添加一個文件結束符或其他東西。不要試圖用你自己的算法來壓縮這些文件。這就是創建zip文件和其他存檔的原因。他們擅長壓縮文本。如果您想將這些功能添加到文本編輯器中,則必須添加某種後保存掛鉤來壓縮它,然後在open命令中加入一個鉤子以將其解壓縮。除非你想每次都用手工做。不要試圖從頭開始編寫文本編輯器,除非(也許)你正在寫記事本。使用語法突出顯示的文本編輯器不容易製作,即使使用正確的庫。我會說寫一個像Visual Studio的東西或你有什麼插件。或者找一個開源的文本編輯器。

+0

我同意馬克;你可以很容易地添加一個gzip函數給vim。但是,除非您以巨大的尺寸處理文本,否則您節省的空間不太可能很大,並且會失去直接文本文件的可移植性。如果您使用gzip,至少其他人可以通過一些努力來打開它,但是如果您實現了這個算法,除編輯器的用戶外,沒有人可以打開該文件。 – Jay 2010-01-31 08:21:06

+0

我覺得'vim'已經支持'.gz' gzip壓縮文件(我的6.2安裝)。 – 2010-01-31 09:32:18

+0

Vim處理zip文件內的文件以及gzip文件。它也可以讀取和寫入加密文件。 – 2010-01-31 10:07:37

7

Emacs透明地處理壓縮。只需創建一個擴展名爲.gz的文本文件。 Emacs將在保存操作期間自動壓縮文件的內容,並在下次打開文件時進行解壓縮。

相關問題