ZipArchive,我需要创建新文件并覆盖现有文件

ZipArchive, I need to create new file and overwrite existing

我正在使用 php ZipArchive,我 运行 遇到了一个简单的问题。

我需要创建新文件,如果存在同名文件,我需要覆盖它。

我的问题是这样的,如果我使用这段代码

if ($zip->open($packageFileName, ZipArchive::OVERWRITE) === TRUE)

它将覆盖任何具有相同名称的现有文件,但是如果不存在具有此类名称的文件则什么也不会发生,如果情况 returns 为 false 并且我会在 zip 文件中填充此 if案例,但是因为如果文件不在上面的磁盘上失败并且没有文件被创建。

如果我这样做

if ($zip->open($packageFileName, ZipArchive::CREATE) === TRUE)

它将 return 为真,文件将被创建或更新,但我不想更新文件,我需要覆盖文件。

所以我有点卡住了,我想覆盖文件,如果它不存在我想创建它,有没有办法在一行中执行此操作,这样我就不必在多行中检查它检查文件是否存在,然后选择 CREATE 或 OVERWRITE,为什么没有 CREATE_OVERWRITE 常量?

就像 PHP 中的错误代码一样,zip 标志也是按位累加的,这意味着您可以使用 OR (|) 组合它们来做更多...

if ($zip->open($packageFileName,  (ZipArchive::CREATE | ZipArchive::OVERWRITE) ))

上面将创建一个 zip(如果不存在),否则将被覆盖。这就是你如何做你的 CREATE_OVERWRITE.