Delphi XE2 新增 System.Zip 单元, 可用一句话压缩整个文件夹了
单元内主要就是 TZipFile 类, 最方便使用的是它的类方法:
TZipFile.ExtractZipFile()
//解压 Zip 文件到指定文件夹
TZipFile.IsValid()
//判断指定文件是否是有效的 Zip 文件
TZipFile.ZipDirectoryContents() //压缩指定路径下的所有文件
测试:
uses System.Zip;
{ 把 C:\Temp\TestDir 下的所有文件压缩到 C:\Temp\Test.zip }
procedure TForm1.Button1Click(Sender: TObject);
begin
TZipFile.ZipDirectoryContents('C:\Temp\Test.zip',
'C:\Temp\TestDir\'); //参数3可以指定压缩算法
end;
{ 把 C:\Temp\Test.zip 解压到 C:\Temp\TestDir2\ }
procedure TForm1.Button2Click(Sender: TObject);
begin
TZipFile.ExtractZipFile('C:\Temp\Test.zip',
'C:\Temp\TestDir2\');
end;
使用实例化类的方式:
uses System.Zip;
{ 压缩 }
procedure TForm1.Button1Click(Sender: TObject);
var
zip: TZipFile;
begin
zip := TZipFile.Create;
zip.Open('C:\Temp\001.zip', TZipMode.zmWrite);
//准备要压缩为 001.zip
zip.Add('C:\Temp\Test.txt',
'Test.txt');
//参1是要压缩的文件; 参2是要使用的文件名; 参数3可指定压缩算法
// zip.Add...
// zip.Close; //Close 时才执行实际压缩过程;
不过在销毁前会调用它
zip.Free;
end;
{ 解压 }
procedure TForm1.Button2Click(Sender: TObject);
var
zip: TZipFile;
begin
zip := TZipFile.Create;
zip.Open('C:\Temp\001.zip',
TZipMode.zmRead);
zip.ExtractAll('C:\Temp\002\');
zip.Free;
end;
//-----------------------------------------------------------------------------------------
TZipFile.ExtractZipFile()
TZipFile.IsValid()
TZipFile.ZipDirectoryContents() //压缩指定路径下的所有文件
测试:
uses System.Zip;
{ 把 C:\Temp\TestDir 下的所有文件压缩到 C:\Temp\Test.zip }
procedure TForm1.Button1Click(Sender: TObject);
begin
end;
{ 把 C:\Temp\Test.zip 解压到 C:\Temp\TestDir2\ }
procedure TForm1.Button2Click(Sender: TObject);
begin
end;
使用实例化类的方式:
uses System.Zip;
{ 压缩 }
procedure TForm1.Button1Click(Sender: TObject);
var
begin
//
//
end;
{ 解压 }
procedure TForm1.Button2Click(Sender: TObject);
var
begin
end;
//-----------------------------------------------------------------------------------------
- uses
-
System.Zip; -
- procedure
TForm1 .FormCreate(Sender:TObject); - var
-
zf:TZipFile; -
i:Integer; - begin
-
zf:=TZipFile.Create; -
-
//创建ZIP压缩文件 -
zf.Open('test.zip',zmWrite); -
zf.Add('.\Project1.exe'); -
zf.Add('.\新建文件夹\新建文本文档.txt'); -
zf.Close; -
-
//释放ZIP压缩文件 -
zf.Open('.\test.zip',zmRead); -
for i:= 0to zf .FileCount-1do ShowMessage(zf .FileName[i]); -
zf.ExtractAll('.\Extract\'); -
zf.Close; -
-
zf.Free; - end;