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

nik*_*aft 4 php ziparchive

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

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

我的问题是,如果我使用此代码

if ($zip->open($packageFileName, ZipArchive::OVERWRITE) === TRUE)
Run Code Online (Sandbox Code Playgroud)

它将覆盖任何具有相同名称的现有文件,但是如果具有这样名称的文件不存在那么什么都不会发生,如果 case 返回 false 并且我用这个 if case 中的文件填充 zip 文件,但是因为如果文件不在上面的磁盘失败并且没有创建文件。

如果我这样做

if ($zip->open($packageFileName, ZipArchive::CREATE) === TRUE)
Run Code Online (Sandbox Code Playgroud)

它将返回 true 并且文件将被创建或更新,但我不想更新文件,我需要覆盖文件。

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

Vin*_*ney 11

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

if ($zip->open($packageFileName,  (ZipArchive::CREATE | ZipArchive::OVERWRITE) ))
Run Code Online (Sandbox Code Playgroud)

上面将创建一个 zip 如果它不存在其他将覆盖。所以这就是你如何做你的“CREATE_OVERWRITE”