archive_read_support_filter_all()允许代码在构建时没有合适的库的情况下使用外部程序。 (请参阅https://www.freebsd.org/cgi/man.cgi?query=archive_read_support_filter_all&sektion=3&apropos=0&manpath=FreeBSD%2B10.0-RELEASE)。
但是 libarchive (https://github.com/libarchive/libarchive/wiki/Examples)本身从各种格式中提取数据,此功能是libarchive的一部分。那么什么时候应该使用它呢?
之间有什么区别

  • archive_read_support_format_all()(https://manpages.debian.org/testing/libarchive-dev/archive_read_format.3.en.html)
  • archive_read_support_filter_all()

  • 我正在使用Libarchive从ODF文件中提取数据,我在Libarchive的文档和示例中遇到了此功能,并且不确定该功能的用途是什么。

    最佳答案

    那不是它的意思。 archive_read_support_filter_all()只是“启用所有可用的减压过滤器。”。
    此外,还有一些关于特定过滤器的说明:

    因此,_all只是所有其他(特定)过滤器的超集。


    好吧,这取决于它的构建方式。如果有合适的库,可以将对zip归档的支持编译到该库中,然后可以。否则,以上注释将适用:libarchive“可能会退回到外部
    程式”


    归档文件具有特定格式(cpio,tar,zip等)。此外,它可以被过滤(gzip,bzip2,lzop,xz等)。
    在某些文件中,过滤器始终相同,但其他过滤器可以混合使用(因此,流行的传统扩展名,例如.tar.gzip的.tgz和.tar.bz2的.tbz2)。
    如果只想使用bzip2启用tar,请使用:

    archive_read_support_format_tar(ar);
    archive_read_support_filter_bzip2(ar);
    
    如果您想要所有可能的压缩/其他编码过滤器,只要它是tar:
    archive_read_support_format_tar(ar);
    archive_read_support_filter_all(ar);
    
    如果要cpio,ar,tar归档,但仅在未压缩的情况下:
    archive_read_support_format_ar(ar);
    archive_read_support_format_cpio(ar);
    archive_read_support_format_tar(ar);
    

    关于c++ - archive_read_support_filter_all()有什么作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62800252/

    10-09 00:22