0

我想用缩写创建一个 *.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;
4

1 回答 1

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;
于 2016-09-06T10:49:17.593 回答