大家好,我在用vclzip做文件的壓縮,解壓的時候,如果被壓縮的文件大於兩G,解壓的時候,在讀取解壓包信息的時候,(readzip-openzip)會提示文件信息錯誤,可是我手動解壓的時候,是可以解壓的,不知道是不是vclzip有限制文件的大小不能超過某個大小,還是什麼問題?
大家好,我在用vclzip做文件的壓縮,解壓的時候,如果被壓縮的文件大於兩G,解壓的時候,在讀取解壓包信息的時候,(readzip-openzip)會提示文件信息錯誤,可是我手動解壓的時候,是可以解壓的,不知道是不是vclzip有限制文件的大小不能超過某個大小,還是什麼問題?
var ziper:TVCLZip;
begin
//函数用法:Zip(压缩模式,压缩包大小,压缩文件,解压目录)
//ZipMode为0:压缩;为1:解压缩 PackSize为0则不分包;否则为分包的大小
try
if copy(UnzipDir, length(UnzipDir), 1) = '\' then
UnzipDir := copy(UnzipDir, 1, length(UnzipDir) - 1); //去除目录后的“\”
ziper:=TVCLZip.Create(application); //创建zipper
ziper.DoAll:=true; //加此设置将对分包文件解压缩有效
ziper.OverwriteMode:=Always; //总是覆盖模式
if PackSize<>0 then begin //如果为0则压缩成一个文件,否则压成多文件
ziper.MultiZipInfo.MultiMode:=mmBlocks; //设置分包模式
ziper.MultiZipInfo.SaveZipInfoOnFirstDisk:=True; //打包信息保存在第一文件中
ziper.MultiZipInfo.FirstBlockSize:=PackSize; //分包首文件大小
ziper.MultiZipInfo.BlockSize:=PackSize; //其他分包文件大小
end;
ziper.FilesList.Clear;
ziper.ZipName := ZipFile; //获取压缩文件名
if ZipMode=0 then begin //压缩文件处理
ziper.FilesList.Add(UnzipDir+'\*.*'); //添加解压缩文件列表
Application.ProcessMessages; //响应WINDOWS事件
ziper.Zip; //压缩
end else begin
ziper.DestDir:= UnzipDir; //解压缩的目标目录
ziper.UnZip; //解压缩
end;
ziper.Free; //释放压缩工具资源
Result:=True; //执行成功
except
Result:=False;//执行失败
end;
end;