简述
编程进行文件压缩一般有三种方法:
一是使用zlib的C++开源源码;
二是使用Quazip动态库;
三就是在子进程中使用第三方软件。
由于我在windows中开发qt程序时已经使用过了zlib源码库;而linux下的命令行操作又如此简单。这里用第三种方法来实现。
代码之路
代码非常简单。这里由于压缩的文件需要传输到windows系统,故采用zip命令压缩生成.zip文件。可以根据实际情况使用其它压缩工具。
void compressFile(const QString srcPath, const QString workPath, const QString zipfile)
{
QProcess process;
process.setWorkingDirectory(workPath); //cd workPath
QStringList args;
args << "-mr" << zipfile << srcPath; //-m表示压缩后删除源文件,如不需要删除,用-r即可
process.start("zip", args);
while (false == process.waitForFinished(1000)) //每隔一秒判断是否压缩完毕
{
;
}
process.close();
return;
}
其中函数的形参srcPath传入待压缩的文件名;workPath传入待压缩文件的路径;zipfile传入生成压缩文件的全路径(包括压缩文件名)。
下面举个遍历目录进行压缩的应用例子:
QDir sdir(spath);
sdir.setFilter(QDir::Fil