splitbrain / php-archive
纯PHP实现,用于读取和写入TAR和ZIP归档
1.3.1
2022-03-23 09:21 UTC
Requires
- php: >=7.0
Requires (Dev)
- ext-bz2: *
- ext-zip: *
- mikey179/vfsstream: ^1.6
- phpunit/phpunit: ^8
Suggests
- ext-bz2: For bz2 compression
- ext-iconv: Used for proper filename encode handling
- ext-mbstring: Can be used alternatively for handling filename encoding
- ext-zlib: For zlib compression
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类可用于在将文件添加到归档时指定额外的信息,如所有权或权限。