C++ 使用libarchive将目录添加到tarfile

C++ 使用libarchive将目录添加到tarfile,c++,qt,libarchive,C++,Qt,Libarchive,我正在尝试将目录添加到我正在创建的tar存档中。存档已创建,但其中没有任何文件 下面是我使用libarchive的代码(directory是指向要涂焦油的目录的路径的QString) 您的代码逻辑不正确。您正在尝试读取目录,而您应该读取目录中的文件。。。您需要这样的内容来迭代文件: QDirIterator it("/etc", QDirIterator::Subdirectories); while (it.hasNext()) qDebug() << it.next();

我正在尝试将目录添加到我正在创建的tar存档中。存档已创建,但其中没有任何文件

下面是我使用libarchive的代码(directory是指向要涂焦油的目录的路径的QString)


您的代码逻辑不正确。您正在尝试读取目录,而您应该读取目录中的文件。。。您需要这样的内容来迭代文件:

QDirIterator it("/etc", QDirIterator::Subdirectories);
while (it.hasNext())
    qDebug() << it.next();
构建并运行
您的代码逻辑不正确。您正在尝试读取目录,而您应该读取目录中的文件。。。您需要这样的内容来迭代文件:

QDirIterator it("/etc", QDirIterator::Subdirectories);
while (it.hasNext())
    qDebug() << it.next();
构建并运行
您的代码逻辑不正确。您正在尝试读取目录,而您应该读取目录中的文件。。。您需要这样的内容来迭代文件:

QDirIterator it("/etc", QDirIterator::Subdirectories);
while (it.hasNext())
    qDebug() << it.next();
构建并运行
您的代码逻辑不正确。您正在尝试读取目录,而您应该读取目录中的文件。。。您需要这样的内容来迭代文件:

QDirIterator it("/etc", QDirIterator::Subdirectories);
while (it.hasNext())
    qDebug() << it.next();
构建并运行
你可以试试我的图书馆, 这是非阻塞和单线程

下面是压缩目录(默认情况下递归添加)的简单代码

#包括
#包括
#包括
int main(int argc,字符**argv){
QCore应用程序应用程序(argc、argv);
磁盘压缩机(“测试7z”);
Compressor.addFiles(“yourdirectocompress”);//添加目录或文件。
QObject::connect(&Compressor,&QArchive::DiskCompressor::finished,[&](){

qDebug()您可以尝试我的库, 这是非阻塞和单线程

下面是压缩目录(默认情况下递归添加)的简单代码

#包括
#包括
#包括
int main(int argc,字符**argv){
QCore应用程序应用程序(argc、argv);
磁盘压缩机(“测试7z”);
Compressor.addFiles(“yourdirectocompress”);//添加目录或文件。
QObject::connect(&Compressor,&QArchive::DiskCompressor::finished,[&](){

qDebug()您可以尝试我的库, 这是非阻塞和单线程

下面是压缩目录(默认情况下递归添加)的简单代码

#包括
#包括
#包括
int main(int argc,字符**argv){
QCore应用程序应用程序(argc、argv);
磁盘压缩机(“测试7z”);
Compressor.addFiles(“yourdirectocompress”);//添加目录或文件。
QObject::connect(&Compressor,&QArchive::DiskCompressor::finished,[&](){

qDebug()您可以尝试我的库, 这是非阻塞和单线程

下面是压缩目录(默认情况下递归添加)的简单代码

#包括
#包括
#包括
int main(int argc,字符**argv){
QCore应用程序应用程序(argc、argv);
磁盘压缩机(“测试7z”);
Compressor.addFiles(“yourdirectocompress”);//添加目录或文件。
QObject::connect(&Compressor,&QArchive::DiskCompressor::finished,[&](){

qDebug()为什么不使用来自Qt世界的存档库,比如Quazip或KDE的存档库?另外,您需要
目录.toLocal8Bit()+“.tar”
,而不是
(目录+”.tar”)。toLocal8Bit()
。此外,我无法想象为什么不使用QFile进行读取。为什么不使用来自Qt世界的存档库,如Quazip或KDE的存档库?此外,您需要
目录.toLocal8Bit()+“.tar”
而不是
(目录+”.tar”)。toLocal8Bit()
。此外,我无法想象为什么不使用QFile进行读取。为什么不使用来自Qt世界的存档库,如Quazip或KDE的存档库?此外,您需要
目录.toLocal8Bit()+“.tar”
而不是
(目录+”.tar”)。toLocal8Bit()
。此外,我无法想象为什么不使用QFile进行读取。为什么不使用来自Qt世界的存档库,如Quazip或KDE的存档库?此外,您需要
目录.toLocal8Bit()+“.tar”
而不是
(目录+”.tar”)。toLocal8Bit()
。此外,我无法想象您为什么不使用QFile进行读取。
qmake && make && ./main
#include <QCoreApplication>
#include <QDebug>
#include <QArchive>

int main(int argc, char** argv)  {
 QCoreApplication app(argc, argv);
 QArchive::DiskCompressor Compressor("test.7z");
 Compressor.addFiles("YourDirectoryToCompress"); // Add directory or file.
 QObject::connect(&Compressor , &QArchive::DiskCompressor::finished, [&]() {
    qDebug() << "Finished!";
    app.quit();
 });

 Compressor.start();
 return app.exec();
}