压缩文件夹

9

我正在尝试使用

TZipFile.ZipDirectoryContents()

像这样:

TZipFile.ZipDirectoryContents('Test.PCF', WorkingDir);

如果我理解正确,它应该会将"workingdir"文件夹的内容保存到名为Test.pcf的文件中。
但当我这样做时,我遇到了错误:
Raised exception class EFOpenError with message Cannot open file
...test.pcf. The process cannot access the file because its being used by another process."

有两件事让我困惑:

  1. 它说无法打开文件。但是 test.pcf 文件还不存在,我希望这个命令会创建它。

  2. 它说无法访问文件。这是因为文件还没有被创建吗?我使用了错误的函数吗?如果是,那么我该如何从文件夹位置创建一个 zip 文件?


1
同样地,我不熟悉TZipFile,但是您尝试压缩的目录中是否包含'Test.PCF'呢? - Nicholas Ring
1个回答

17

我测试了您的代码,发现它与您报告的情况相同失败了。

然后我通过运行WinZip手动创建了一个空的zip文件。

接着运行您的代码,它可以正常运行。

看起来ZipDirectoryContents需要已经存在Zip文件才能工作。

要编程创建zip文件:

  myZipFile := TZIpFile.Create;
  myZipFile.Open('c:\myfolder\newzipfile.zip', TZipMode.zmWrite);
  myZipFile.Close;
  myZipFile.Free;

那么这一行就可以工作:

  TZipFile.ZipDirectoryContents('c:\myfolder\newzipfile.zip', WorkingDir);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接