我想用abbrevia创建一个* .tar.gz文件,我使用下面的代码但空文件夹没有添加到存档中。 baseDir
包含空文件夹而非空文件夹。
我发现修复了空文件夹的错误
https://sourceforge.net/p/tpabbrevia/bugs/108/
https://sourceforge.net/p/tpabbrevia/bugs/8/
如何将这些空文件夹添加到存档?
Zip := TAbZipper.Create(nil);
try
Zip.BaseDirectory := baseDir;
Zip.StoreOptions := [soRecurse];
Zip.Filename := targetFile;
Zip.FArchive.StoreOptions := [soRecurse];
Zip.AddFiles('*', faDirectory + faAnyFile);
Zip.CloseArchive;
finally
Zip.Free;
end;
答案 0 :(得分:0)
我无法使用TPabbrevia
创建包含空文件夹的存档。我正在使用Jedi
创建存档,并使用TPabbrevia
将其解压缩,因为Jedi
无法正确提取Windows 10
上的tar存档。
参数archiveFileName应包含.tar文件扩展名。
function createArchiveFromDirectory(archiveFileName, directory:String):Boolean;
var
AFormat: TJclCompressArchiveClass;
Arc: TJclCompressArchive;
Code: Integer;
str:string;
begin
Result := True;
try
AFormat := GetArchiveFormats.FindCompressFormat(archiveFileName);
if ( AFormat <> nil ) then
Begin
FArchive := AFormat.Create(ArchiveFileName, 0, False);
str := ExtractFileName(Directory);
(FArchive as TJclCompressArchive).AddDirectory(str, Directory, True, True);
(FArchive as TJclCompressArchive).Compress;
End;
except
// exception handling
end;
FreeAndNil(FArchive);
end;