windows下 qt使用zlib将一个文件夹压缩成.zip后 里面文件的.后缀都没了
时间: 2024-02-05 11:11:17 浏览: 291
zlib库的使用,可以压缩和解压文件夹.zip
5星 · 资源好评率100%
这个问题可能是由于在使用zlib压缩文件夹时,没有将文件的后缀名存储到压缩文件中导致的。你可以检查一下你的代码,确保在压缩每个文件之前,正确地获取了文件的名称和后缀名,并将其存储到压缩文件中。
另外,如果你是使用Qt的QZipWriter类来进行压缩的,可以考虑使用QFileInfo类来获取文件的完整路径和文件名,然后使用QZipWriter::addFile()函数来将文件添加到压缩文件中。这样做可以确保文件的后缀名被正确地存储到压缩文件中。
下面是一个示例代码:
```cpp
#include <QCoreApplication>
#include <QDir>
#include <QFileInfo>
#include <QZipWriter>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 定义要压缩的文件夹路径
QString dirPath = "C:/example";
// 定义要输出的压缩文件路径
QString zipPath = "C:/example.zip";
// 创建QZipWriter对象,并打开压缩文件
QZipWriter zipWriter(zipPath);
if (!zipWriter.isOpen()) {
qWarning("Failed to open zip file for writing");
return 1;
}
// 遍历文件夹中的所有文件,并将其添加到压缩文件中
QDir dir(dirPath);
QStringList fileList = dir.entryList(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
foreach (QString filePath, fileList) {
QFileInfo fileInfo(dir, filePath);
if (fileInfo.isFile()) {
QFile file(fileInfo.absoluteFilePath());
if (!file.open(QIODevice::ReadOnly)) {
qWarning("Failed to open file %s for reading", qPrintable(fileInfo.absoluteFilePath()));
continue;
}
zipWriter.addFile(file, fileInfo.fileName());
file.close();
}
}
// 关闭压缩文件
zipWriter.close();
return 0;
}
```
这段代码使用了QFileInfo类来获取文件的完整路径和文件名,并将其传递给QZipWriter::addFile()函数来添加文件到压缩文件中。这样做可以确保文件的后缀名被正确地存储到压缩文件中。
阅读全文