使用zip压缩文件夹
uses Zipper,fileutil;
//用传统的遍历方法:
procedure TForm1.Button1Click(Sender: TObject);
var Zipper: TZipper;
ZEntries: TZipFileEntries;
sourceRec: TSearchRec;
i: smallint;
begin
SelectDirectoryDialog1.Title := '要压缩的目录';
SelectDirectoryDialog1.Filter := '全部目录(*.*)|*.*';
if SelectDirectoryDialog1.Execute then Begin
try
Zipper := TZipper.Create;
Zipper.FileName := SelectDirectoryDialog1.FileName + '.zip';
i := findFirst(SelectDirectoryDialog1.FileName + '\*.*', faAnyFile, sourceRec);
ZEntries := TZipFileEntries.Create(TZipFileEntry);
while(i = 0) do begin
if (sourceRec.Attr and faDirectory) = 0 then //不要子目录
ZEntries.AddFileEntry(SelectDirectoryDialog1.FileName + '\' + sourceRec.Name, sourceRec.Name);
i := FindNext(sourceRec);
end;
FindClose(sourceRec);
if ZEntries.Count>0 then
Zipper.ZipFiles(ZEntries);
finally
FreeAndNil(ZEntries);
FreeAndNil(Zipper);
end;
Edit1.Text := SelectDirectoryDialog1.FileName + '.zip';
showmessage('目录压缩成功');
end;
end;
//解压
procedure TForm1.Button2Click(Sender: TObject);
var
unzipper : TUnzipper;
begin
unzipper := TUnzipper.create;
unzipper.FileName :='F:\test.zip';
unzipper.outputpath :='F:\test';
unzipper.UnzipAllFiles;
showmessage('解压成功');
end;
//用简洁方法压缩文件夹
procedure TForm1.Button3Click(Sender: TObject);
var
StrList:TStringList;
Zipper: TZipper;
ZEntries: TZipFileEntries;
i:Integer;
begin
StrList:=TStringList.Create;
StrList:=FindAllFiles('F:\长沙市教育局','*.json',True);
Zipper := TZipper.Create;
Zipper.FileName :='F:\test.zip';
ZEntries := TZipFileEntries.Create(TZipFileEntry);
for i:=0 to StrList.Count-1 do ZEntries.AddFileEntry(StrList[i],ExtractFileName(StrList[i]));
if ZEntries.Count>0 then Zipper.ZipFiles(ZEntries);
FreeAndNil(ZEntries);
FreeAndNil(Zipper);
Memo1.Lines:=StrList;
FreeAndNil(StrList);
end;
浙公网安备 33010602011771号