在文件中允许随机读/写的最佳压缩算法是什么?
我知道任何自适应压缩算法都是不可能的。
我知道霍夫曼编码是不可能的。
有没有更好的压缩算法,允许随机读/写?
我认为如果你以块的形式编写,你可以使用任何压缩算法,但理想情况下,我不想一次解压缩整个块。但是如果你有一个简单的方法和如何知道区块边界的建议,请让我知道。如果这是您的解决方案的一部分,请让我知道当您想要读取的数据跨越块边界时您会做什么?
在你回答的上下文中,请假设有问题的文件是100 17,有时我想读取前10个字节,有时我想读取后19个字节,有时我想读取中间的17个字节。。
发布于 2010-08-08 13:20:33
许多回复暗示这样的事情是不可能的,我对此感到震惊。
这些人难道从来没有听说过“压缩文件系统”吗?在1993年微软被Stac Electronics起诉压缩文件系统技术之前,压缩文件系统就已经存在了。
我听说对于实现压缩文件系统的人来说,LZS和LZJB是流行的算法,这必然需要随机访问读取和随机访问写入。
也许最简单也是最好的做法是为该文件打开文件系统压缩,然后让操作系统处理细节。但是,如果您坚持手动处理它,也许您可以通过阅读有关NTFS transparent file compression的知识来获得一些提示。
另请查看:"StackOverflow: Compression formats with good support for random access within archives?"
发布于 2011-08-23 23:23:58
razip格式支持随机访问读取,比gzip/bzip2具有更好的性能,而gzip/bzip2必须进行调整才能实现此支持:
http://sourceforge.net/projects/razip/
发布于 2008-11-06 10:03:19
基于字典的压缩方案,每个字典条目的代码都用相同的大小编码,将导致能够以代码大小的任意倍数开始读取,并且如果代码不使用其上下文/邻居,则写入和更新很容易。
如果编码包括一种区分代码开始或结束的方法,那么您不需要代码具有相同的长度,并且可以从文件中间的任何位置开始读取。如果您从流中的未知位置进行读取,则此技术更有用。
https://stackoverflow.com/questions/236414
复制相似问题