谁有做过在Delphi中压缩整个目录成一个文件,救急!给100分! 我现在要做服务端控制客户端来接收文件,但是客户端那边是目录,我想把客户端的目录压缩成一个文件,然后通过socket进行传送这个文件到服务端指定目录,但是现在不知道如何压缩目录成一个文件,请各位大侠多多指教,给100分! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 对方有RAR的话,直接调用winrar命令行参考 rar a -o+ c:\11.mdb c:\temp\myback.rar不然用第三方压缩控件VCLZip 补充一下一楼: {--------------压缩----------------------} htys:='d:\tmp_data.rar'; dbpath := 'd:\tmp'; aa:='winrar.exe a -mm -r '+ htys + ' ' + dbpath + '\htys'; if winexec(pchar(aa),1)<=31 then begin messagebox(handle,'压缩操作失败!','提示信息',0); exit; end; {-------------解压缩----------------------} file_name:='d:\htys\tmp_data.rar'; dbpath := 'd:\tmp'; aa:='winrar e -o+ '+file_name+' '+dbpath; if not fileexists(file_name) then begin messagebox(handle,pchar(file_name+'文件不存在,无法进行解压缩操作!'),'提示信息',0); exit; end; if winexec(pchar(aa),sw_hide)<=31 then begin messagebox(handle,'解压缩操作失败!','提示信息',0); exit; end;//VCLZip控件VCLZip1.FilesList.Add('...'); // VCLZip1.ZipName := ... Try VCLZip1.Zip; //压缩文件 Except Application.MessageBox('压缩失败', '错误', MB_OK); End; 用winrar可以file_path:=winrar_path+' a -ibck -r -sfx '+dir_path1+' '+dir_path2+'\*.*';WinExec(pchar(file_path),SW_HIde);winrar_path为winrar.exe路径如d:\winrar\winrar.exerir_path1为缩文件路径名称d:\wendang\aarir_path1为要压缩文件夹路径名称如:d:\wendang\aaa -ibck -r -sfx 为winrar命令参数,可以看winrrar帮助 用VCLZIP这个控件能否压缩目录啊,好像只能够压缩目录中的文件,子目录救不能压缩拉 可以拉,只要再设置两个属性要想能够压缩目录,那么就必须让VCLZip的控件Recurse和RelativePaths这两个属性置为True同时代码中如下添加: VCLZip2.FilesList.Add('E:\Download\*.*'); //VCLZip1.RelativePathList.Add('E:\Download'); VCLZip2.ZipName := 'E:\aaaa.rar'; Try VCLZip2.Zip; //压缩文件 Except Application.MessageBox('压缩失败', '错误', MB_OK); End;非常感谢以上大侠的回答!再次谢过! 我这样做对否 ADOQuery中数据导入sql server 的问题 如何调用Word模板生成Word文档 复杂的交叉报表用什么来做,如何做? 如何将控件放置到最前面呀 谢谢 通过调用DLL完成对表的查询并返回字符列表行不通吗?为什么出错? 提问,怎样才能用ado正确调用存储过程!!高分求解,大家看看也好!! ServerSocket1如何向 CLINTSOCKET1,和clintsocket2主动发送消息呢? 寻找图形开发的资料 怎样处理NMFTP出现的错误? 请大伙帮忙看看这个计算字段应该怎么写? 一个关于考勤与补贴统计的查询大家都来试试,看什么方法好!
winrar命令行参考
rar a -o+ c:\11.mdb c:\temp\myback.rar不然用第三方压缩控件VCLZip
htys:='d:\tmp_data.rar';
dbpath := 'd:\tmp';
aa:='winrar.exe a -mm -r '+ htys + ' ' + dbpath + '\htys';
if winexec(pchar(aa),1)<=31 then
begin
messagebox(handle,'压缩操作失败!','提示信息',0);
exit;
end; {-------------解压缩----------------------}
file_name:='d:\htys\tmp_data.rar';
dbpath := 'd:\tmp';
aa:='winrar e -o+ '+file_name+' '+dbpath;
if not fileexists(file_name) then
begin
messagebox(handle,pchar(file_name+'文件不存在,无法进行解压缩操作!'),'提示信息',0);
exit;
end; if winexec(pchar(aa),sw_hide)<=31 then
begin
messagebox(handle,'解压缩操作失败!','提示信息',0);
exit;
end;
//VCLZip控件VCLZip1.FilesList.Add('...'); //
VCLZip1.ZipName := ...
Try
VCLZip1.Zip; //压缩文件
Except
Application.MessageBox('压缩失败', '错误', MB_OK);
End;
file_path:=winrar_path+' a -ibck -r -sfx '+dir_path1+' '+dir_path2+'\*.*';
WinExec(pchar(file_path),SW_HIde);
winrar_path为winrar.exe路径
如d:\winrar\winrar.exe
rir_path1为缩文件路径名称
d:\wendang\aa
rir_path1为要压缩文件夹路径名称
如:d:\wendang\aa
a -ibck -r -sfx 为winrar命令参数,可以看winrrar帮助
要想能够压缩目录,那么就必须让VCLZip的控件Recurse和RelativePaths这两个属性置为True同时代码中如下添加:
VCLZip2.FilesList.Add('E:\Download\*.*');
//VCLZip1.RelativePathList.Add('E:\Download');
VCLZip2.ZipName := 'E:\aaaa.rar';
Try
VCLZip2.Zip; //压缩文件
Except
Application.MessageBox('压缩失败', '错误', MB_OK);
End;非常感谢以上大侠的回答!再次谢过!