如何将空文件夹添加到abbrevia tar文件

时间:2016-09-05 11:19:40

标签: delphi compression abbrevia

我想用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;

1 个答案:

答案 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;