【问题标题】:Compress a directory using LZ4 in C++在 C++ 中使用 LZ4 压缩目录
【发布时间】:2020-10-30 20:06:21
【问题描述】:

我的目标是使用 LZ4 压缩整个目录。我有压缩单个文件的代码。所以我迭代了目录和子目录,并压缩了每个扩展名为 (.lz4) 的文件(例如:filename.txt 到 filename.txt.lz4)。我得到的结果是一个包含压缩文件的目录。但我希望输出是一个存档文件。我不知道结果文件夹应该归档哪个文件扩展名(zip、tar)。另外,如何在 C++ 中做到这一点。提前致谢。

【问题讨论】:

  • 你通过这样做来制作一个压缩的 tar 存档:先制作 tar ,然后压缩它(这很好,因为它利用了文件间冗余)。一个 zip 文件分别压缩每个文件,然后将这些流合并到一个更大的文件中。但是,我认为它不支持 lz4 作为压缩方案(至少,维基百科似乎没有列出它)。因此,如果您要 lz4 分别压缩每个文件,您会感到有点不知所措。 The tar format is pretty simple, though.

标签: c++ directory compression archive lz4


【解决方案1】:

您需要制作一个 tar 文件,这是您的文件和目录的未压缩存档,然后使用 lz4 对其进行压缩。 libarchive 可以帮助解决焦油部分。

【讨论】:

    【解决方案2】:

    试试这个命令行:

    tar cvf - directory | lz4 - archive.tar.lz4
    

    再生会

    lz4 archive.tar.lz4 - | tar xvf -
    

    【讨论】:

    • 我想在 C++ 代码中将目录制作成 .tar 文件。你能帮我解决这个问题吗?
    • 您可以从您的 C++ 程序内部调用system()。如果这不可能,那么您将需要直接使用相关库,这是完全不同的复杂性。正如 Mark 所建议的,libarchive 将是一个很好的起点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-31
    • 2014-05-08
    • 2016-01-09
    • 2014-01-01
    • 1970-01-01
    • 2016-05-01
    • 1970-01-01
    相关资源
    最近更新 更多