C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何使用C中的libbz2压缩目录大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要创建一个目录的tarball,然后用C中的bz2进行压缩.有没有使用libtar和libbz2的体面教程?

解决方法

好的,我为你做了一个快速的例子.没有错误检查和各种任意决定,但它的工作. libbzip2具有相当的 good web documentation. libtar,而不是这么多,但是在包中有联机帮助页,一个例子和一个记录的头文件.以下可以使用g C TarBz2.cpp -ltar -lbz2 -o C TarBz2.exe构建:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <libtar.h>
#include <bzlib.h>
#include <unistd.h>

int main()
{
    TAR *pTar;
    char tarFilename[] = "file.tar";
    char srcDir[] = "dirToZip/";
    char extractTo[] = ".";

    tar_open(&pTar,tarFilename,NULL,O_WRONLY | O_CREAT,0644,TAR_GNU);
    tar_append_tree(pTar,srcDir,extractTo);

    close(tar_fd(pTar));

    int tarFD = open(tarFilename,O_RDONLY);

    char tbz2Filename[] =  "file.tar.bz2";
    FILE *tbz2File = fopen(tbz2Filename,"wb");
    int bzError;
    const int BLOCK_MULTIPLIER = 7;
    BZFILE *pBz = BZ2_bzWriteOpen(&bzError,tbz2File,BLOCK_MULTIPLIER,0);

    const int BUF_SIZE = 10000;
    char* buf = new char[BUF_SIZE];
    ssize_t bytesRead;
    while((bytesRead = read(tarFD,buf,BUF_SIZE)) > 0) {
        BZ2_bzWrite(&bzError,pBz,bytesRead);
    }        
    BZ2_bzWriteClose(&bzError,null);
    close(tarFD);
    remove(tarFileName);

    @R_262_9421@e[] buf;

}

大佬总结

以上是大佬教程为你收集整理的如何使用C中的libbz2压缩目录全部内容,希望文章能够帮你解决如何使用C中的libbz2压缩目录所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。