建设银行网站适用浏览器,flash网页设计教程,加大志愿服务网站建设,互联虚拟主机7Z压缩是一款常用的压缩算法和工具#xff0c;本文主要介绍一款在qt环境下进行编译的压缩方法。
本人测试是可以正常跑通的#xff0c;具体代码部分请下载#xff1a;下载链接#xff0c;提取码#xff1a;ev9t
7z源码网址#xff1a;7-Zip
7z简介#xff1a;
7z 是…7Z压缩是一款常用的压缩算法和工具本文主要介绍一款在qt环境下进行编译的压缩方法。
本人测试是可以正常跑通的具体代码部分请下载下载链接提取码ev9t
7z源码网址7-Zip
7z简介
7z 是一种全新的压缩格式它拥有极高的压缩比。
7z 格式的主要特征
开放的结构高压缩比强大的 AES-256 加密能够兼容任意压缩、转换、加密算法最高支持 16000000000 GB 的文件压缩以 Unicode 为标准的文件名支持固实压缩支持文件头压缩
7z 已公开了结构编辑功能所以它可以支持任何一种新的压缩算法。到目前为止下列压缩算法已被整合到了 7z 中 本文分享的代码具备直接调用7z源码进行操作具有较高的学习价值。
//列出文件
void MainWindow::on_pushButton_2_clicked()
{Q7z::initSevenZ();const QString path E:/ProjectTest/QT/LZMA/lz.7z;QFile file(path);file.open(QIODevice::ReadOnly);QVectorQ7z::File files Q7z::listArchive(file);for(int i 0;ifiles.count();i){Q7z::File file files.at(i);qDebug()file.path;}
} QVectorFile listArchive(QFileDevice *archive)
{Q7Z_ASSERTS(archive, Readable)const qint64 initialPos archive-pos();try {CCodecs codecs;if (codecs.Load() ! S_OK)throw SevenZipException(QCoreApplication::translate(Q7z, Cannot load codecs.));COpenOptions op;op.codecs codecs;CObjectVectorCOpenType types;op.types types; // Empty, because we use a stream.CIntVector excluded;op.excludedFormats excluded;const CMyComPtrIInStream stream new QIODeviceInStream(archive);op.stream stream; // CMyComPtr is needed, otherwise it crashes in OpenStream().CObjectVectorCProperty properties;op.props properties;CArchiveLink archiveLink;if (archiveLink.Open2(op, nullptr) ! S_OK) {throw SevenZipException(QCoreApplication::translate(Q7z,Cannot open archive \%1\.).arg(archive-fileName()));}QVectorFile flat;for (unsigned i 0; i archiveLink.Arcs.Size(); i) {IInArchive *const arch archiveLink.Arcs[i].Archive;UInt32 numItems 0;if (arch-GetNumberOfItems(numItems) ! S_OK) {throw SevenZipException(QCoreApplication::translate(Q7z,Cannot retrieve number of items in archive.));}flat.reserve(flat.size() numItems);for (uint item 0; item numItems; item) {UString s;if (archiveLink.Arcs[i].GetItemPath(item, s) ! S_OK) {throw SevenZipException(QCoreApplication::translate(Q7z,Cannot retrieve path of archive item \%1\.).arg(item));}File f;f.archiveIndex.setX(i);f.archiveIndex.setY(item);f.path UString2QString(s).replace(QLatin1Char(\\), QLatin1Char(/));Archive_IsItem_Folder(arch, item, f.isDirectory);f.permissions getPermissions(arch, item, nullptr);getDateTimeProperty(arch, item, kpidMTime, (f.utcTime));f.uncompressedSize getUInt64Property(arch, item, kpidSize, 0);f.compressedSize getUInt64Property(arch, item, kpidPackSize, 0);flat.append(f);}}return flat;} catch (const char *err) {archive-seek(initialPos);throw SevenZipException(err);} catch (const SevenZipException e) {archive-seek(initialPos);throw e; // re-throw unmodified} catch (...) {archive-seek(initialPos);throw SevenZipException(QCoreApplication::translate(Q7z,Unknown exception caught (%1).).arg(QString::fromLatin1(Q_FUNC_INFO)));}return QVectorFile(); // never reached
} 链接: https://pan.baidu.com/s/15VldB4LMVgl3XbOabGZ-og 提取码: ev9t
请按需提取