首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Abbrevia存档中设置基线文件夹?

如何在Abbrevia存档中设置基线文件夹?
EN

Stack Overflow用户
提问于 2014-02-06 16:09:37
回答 1查看 1.9K关注 0票数 1

我正在尝试使用Abbrevia来构建一个ZIP存档。代码如下所示:

代码语言:javascript
复制
procedure TMyClass.AddToArchive(archive: TAbZipArchive; const filename: string);
var
   fullname: string;
begin
   FReport.newStep(format('Preparing %s...', [filename]));
   if trim(filename) = '' then
      Exit;
   fullname := TPath.Combine(GetRootPath(), filename);
   if fileExists(fullname) then
      archive.AddFiles(filename, faAnyFile)
   else FMissingValues.add(ExtractFileName(fullname));
end;

procedure TMyClass.ZipProc(Sender : TObject; Item : TAbArchiveItem;
  OutStream : TStream);
begin
  AbZip(TAbZipArchive(Sender), TAbZipItem(Item), OutStream);
end;

procedure TMyClass.BuildArchive(const files, zipname: string);
var
   list: TStringList;
   archive: TAbZipArchive;
   filename, root: string;
begin
   archive := TAbZipArchive.Create(zipname, fmCreate);
   list := TStringList.Create;
   try
      archive.InsertHelper := ZipProc;
      root := GetRootPath();
      archive.BaseDirectory := root;
      list.Text := files;
      for filename in list do
         AddToArchive(archive, TPath.Combine(root, filename));
      archive.Save;
   finally
      archive.Free;
      list.free;
   end;
end;

我得到一个有效的压缩文件,除了一个问题。在生成的the文件中,文件夹结构是相对于C:驱动器的根创建的,而不是相对于archive.BaseDirectory创建的。(所有东西都存储在\Users\Mason\Documents\等等下面)很明显,我误解了BaseDirectory财产的用途。如何使插入的文件相对于特定的根文件夹存储?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-06 16:26:35

您不应该在AddFiles中使用完整的路径,而只使用相对于BaseDirectory的路径。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21608075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档