如何在不使用C ++解压缩的情况下读取xz文件?

问题描述

我想有效地读取xz文件,所以我认为解压缩不是一个好选择。

是否可以使用任何方法读取xzfile而不用c ++解压缩?

我知道zlib是读取gz文件的好工具,但不能在xz文件中使用。

我发现我可以vim xz文件显示效果很好。但是当我使用cpp ifstream getline时,它会出乱码。 有人可以解释吗?

解决方法

压缩是将一个字节序列转换为另一个字节序列的可逆过程,希望将其缩短为 1 。减压是该过程的逆过程。因此,当然,如果您已经压缩了字节序列,则必须对其进行解压缩以恢复内容。没有办法解决,因此性能下降是不可避免的。所以答案

是否可以使用任何方法读取xzfile而不用c ++解压缩?

只是“否”。是否使用C ++都没关系。

至于

我发现我可以在xz文件中显示vim。

是的,因为vim为您解压缩了文件(可能在内存中)。只是没有告诉你这件事。


1 有趣的事实:数学告诉我们,对于每个压缩算法,都有一个输入,因此该算法实际上会产生较大的输出。压缩算法基于以下事实:我们压缩的内容内部有一些不错的模式,例如话。这也是为什么多次(但永远不会)应用压缩的原因。

,

xz不是文本文件,它包含字节,而不是字符,因此您不能在其上使用标准输入流,而剩下的是fread。但是,xz是开源的,因此,如果您的工具也是开源的,则只需获取他们的代码并使其适应您的需求即可。