其他方式在zip文件中修改文件

时间:2014-05-31 08:46:08

标签: php zip compression tar

我需要知道其他可能的方式............

我尝试修改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等,我需要一些格式让我压缩内部的许多文件并在他的内容中修改此

感谢最诚挚的问候

1 个答案:

答案 0 :(得分:0)

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

支持每个文件压缩的​​文件系统(NTFS,我们的SolFS等)通过压缩文件的几个块(扇区,页面)并尝试将它们放入较少数量的块来完成此操作。文件系统通常还有额外的可用空间。因此,当文件改变文件大小时,修改文件会导致块被写入除磁盘原始扇区之外的其他位置。

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

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