我想使用算法来减少用于保存特定文本文件的内存。我真的不知道文本是如何存储的,但我有一个想法。
扩展一个开源文本编辑器(如果是,而不是哪一个)或者自己编写一个文本编辑器会不会更好。
如果有人也可以给我一些关于文本编辑器如何工作以及数据存储方式的基础知识的链接或教程,那将是很好的。
已编辑添加
为了澄清,我想要做的不是保存一个单词的副本,而是创建一个哈希表并将地址存储在需要放置的位置。
这样我就不会存储重复项。
这将特定于特定的文本编辑器。
更新
谢谢大家,我得到你们所有人都想说的话。无论如何,我想做的不是保存一个单词的副本,而是创建一个哈希表并存储需要放置的地址。这是我不会存储重复项。
是的,这将特定于特定的文本编辑器。从来没有意识到这一点。
答案 0 :(得分:11)
我想使用算法来减少用于保存特定文本文件的内存
如果你这样做了,你将不再拥有文本编辑器,而是你会创建某种二进制文件编辑器。
文本文件格式的重点是它是通用的,这意味着任何文本文件都可以在任何其他文本编辑器中打开。
答案 1 :(得分:7)
Emacs透明地处理压缩。只需创建扩展名为.gz的文本文件即可。 Emacs将在保存操作期间自动压缩文件内容,并在下次打开文件时解压缩。
答案 2 :(得分:3)
文本基本上按原样存储。即,每个字符占用一个或两个字节(宽字符),并且在保存时不会对其进行转换。它可能会添加文件结尾字符或其他内容。不要尝试使用自己的算法来压缩这些文件。这就是创建zip文件和其他档案的原因。他们非常善于压缩文本。如果你想将这些功能添加到你的文本编辑器中,你必须添加某种后保存钩子来拉链它,然后在open命令上放一个钩子来解压它。除非你每次都想手工做。不要尝试自己编写文本编辑器,除非(也许)你正在写记事本。即使使用适当的库,具有语法突出显示的文本编辑器也不容易制作。我会说为Visual Studio或者你有什么东西写一个插件。或者找一个开源文本编辑器。