【问题标题】:Modify files inside zip file, other way修改zip文件中的文件,其他方式
【发布时间】:2014-07-21 00:19:28
【问题描述】:

我想修改 zip 文件中的一些文件。我尝试使用类 zip 并且它有效:

$zip = new ZipArchive;
$res = $zip->open('test.zip');
if ($res === TRUE) {
$zip->extractTo('./', 'test.txt');

$fp=fopen("test.txt","a");

fputs($fp,"Hello"."\n");
fclose($fp);

$zip->addFile('test.txt');
$zip->close();

unlink ("test.txt");    

}

是否可以不创建用于修改、提取、重新打包等的临时文件。相反,只在 zip 文件中修改我想要更改的目标文件。

如果无法使用 zip 文件,则没问题。我可以使用其他压缩文件格式,比如tar等。我需要一些格式让我压缩里面的很多文件,并在他的内容中修改。

【问题讨论】:

    标签: php zip compression tar


    【解决方案1】:

    如果您压缩文件(并因此在容器中更改它们的大小),那么常规存档格式将不允许您就地修改文件,因为任何修改都会导致大小变化并且文件不会很好地适应。

    支持按文件压缩的​​文件系统(NTFS、我们的 SolFS 等)通过压缩文件的多个块(扇区、页面)并尝试将它们放入较少数量的块来实现此目的。此外,文件系统通常有额外的可用空间。因此,文件的修改,当它导致文件大小的变化时,会导致块被写入磁盘原始扇区以外的不同位置。

    这就是说,没有压缩文件格式适合你。 TAR 不是压缩格式(即文件未压缩存储),但如果您修改文件并导致大小更改,TAR 将无济于事。

    我能看到的唯一选项是支持压缩的文件中的文件系统(例如,代码库文件系统,我们的 SolFS)。不幸的是,Codebase 文件系统和 SolFS 都没有 PHP 接口。

    【讨论】:

      猜你喜欢
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多