splitbrain/php-archive

纯PHP实现,用于读取和写入TAR和ZIP归档

资助包维护!
splitbrain

1.3.1 2022-03-23 09:21 UTC

This package is auto-updated.

Last update: 2024-09-16 19:36:24 UTC


README

此库允许在不使用任何特殊PHP扩展(gz和bzip用于压缩)的情况下处理新的ZIP和TAR归档。它可以创建新文件或提取现有文件。

为了保持简单,不支持现有归档的修改(添加或删除文件)。

安装

使用composer

php composer.phar require splitbrain/php-archive

用法

Zip和Tar类的用法基本上是相同的。以下是处理TAR的示例,以帮助您开始。

查看API文档以获取更多信息。

require_once 'vendor/autoload.php';
use splitbrain\PHPArchive\Tar;

// To list the contents of an existing TAR archive, open() it and use
// contents() on it:
$tar = new Tar();
$tar->open('myfile.tgz');
$toc = $tar->contents();
print_r($toc); // array of FileInfo objects

// To extract the contents of an existing TAR archive, open() it and use
// extract() on it:
$tar = new Tar();
$tar->open('myfile.tgz');
$tar->extract('/tmp');

// To create a new TAR archive directly on the filesystem (low memory
// requirements), create() it:
$tar = new Tar();
$tar->create('myfile.tgz');
$tar->addFile(...);
$tar->addData(...);
...
$tar->close();

// To create a TAR archive directly in memory, create() it, add*()
// files and then either save() or getArchive() it:
$tar = new Tar();
$tar->setCompression(9, Archive::COMPRESS_BZIP);
$tar->create();
$tar->addFile(...);
$tar->addData(...);
...
$tar->save('myfile.tbz'); // compresses and saves it
echo $tar->getArchive(); // compresses and returns it

Tar和Zip之间的区别:TAR作为一个整体进行压缩,而ZIP对每个文件进行单独压缩。因此,您可以在每个addFile()addData()函数调用之前调用setCompression

FileInfo类可用于在将文件添加到归档时指定额外的信息,如所有权或权限。