ZipArchive类是专门用于文件的压缩与解压操作的类,通过压缩文件可以达到节省磁盘空间的目的,并且压缩文件体积更小,便于网络传输。

在ZipArchive类中我们主要使用如下方法:

1:open(打开一个压缩包文件)$zip = new \ZipArchive;

$zip->open('test_new.zip', \ZipArchive::CREATE)

参数说明:

第一个参数:要打开的压缩包文件

第二个参数:

ZIPARCHIVE::OVERWRITE总是创建一个新的文件,如果指定的zip文件存在,则会覆盖掉。

ZIPARCHIVE::CREATE如果指定的zip文件不存在,则新建一个。

ZIPARCHIVE::EXCL如果指定的zip文件存在,则会报错。

ZIPARCHIVE::CHECKCONS对指定的zip执行其他一致性测试。

(免费学习视频教程分享:php视频教程)

2:addFile(将指定文件添加到压缩包中)//将test.txt文件添加到压缩包中

$zip->addFile('test.txt'); //第二个参数可对文件进行重命名

3:addEmptyDir (将指定空目录添加到压缩包中)//将一个空的目录添加到zip中

$zip->addEmptyDir ('newdir');

4:addFromString(将指定内容的文件添加到压缩包)// 将有指定内容的new.txt文件添加到zip文件中

$zip->addFromString('new.txt', '要添加到new.txt文件中的文本');

5:extractTO(将压缩包解压到指定目录)$zip->extractTo('test');

6:getNameIndex(根据索引返回文件名称)$zip->getNameIndex(0);//返回压缩包中索引为0的文件名称

7:getStream(根据压缩内的文件名称,获取该文件的文本流)$zip->getStream('hello.txt');

8:renameIndex(根据压缩文件内的索引(从0开始)修改压缩文件内的文件名)/把压缩文件内第一个文件修改成newname.txt

$zip->renameIndex(0,'newname.txt');

9:renameName(根据压缩文件内的文件名,修改压缩文件内的文件名)//把压缩文件内的word.txt修改成newword.txt

$zip->renameName('word.txt','newword.txt');

10:deleteIndex (根据压缩文件内的索引删除压缩文件内的文件)//把压缩文件内第一个文件删除

$zip->deleteIndex (0);

11:deleteName(根据压缩文件内的文件名删除文件)//把压缩文件内的word.txt删除

$zip->deleteName('word.txt');

上面是ZipArchive类的一些常用方法,下面来介绍一些简单示例:

一:创建一个压缩包$zip = new \ZipArchive;

if ($zip->open('test_new.zip', \ZipArchive::CREATE) === true)

{

// 将指定文件添加到zip中

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

// test.txt文件添加到zip并将其重命名为newfile.txt

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

// 将test.txt文件添加到zip文件中的test文件夹内

$zip->addFile('test.txt', 'test/newfile.txt');

//将一个空的目录添加到zip中

$zip->addEmptyDir ('test');

// 将有指定内容的new.txt文件添加到zip文件中

$zip->addFromString('new.txt', '要添加到new.txt文件中的文本');

// 将有指定内容的new.txt添加到zip文件中的test文件夹

$zip->addFromString('test/new.txt', '要添加到new.txt文件中的文本');

//将images目录下所有文件添加到zip中

if ($handle = opendir('images')){

// 添加目录中的所有文件

while (false !== ($entry = readdir($handle))){

if ($entry != "." && $entry != ".." && !is_dir('images/' . $entry)){

$zip->addFile('images/' . $entry);

}

}

closedir($handle);

}

// 关闭zip文件

$zip->close();

}

二:获取压缩包的文件信息并解压指定压缩包$zip = new \ZipArchive;

if ($zip->open('test_new.zip') === true) {

//获取索引为0的文件名称

var_dump($zip->getNameIndex(0));

//将压缩包文件解压到test目录下

$zip->extractTo('test');

//获取压缩包指定文件的文本流

$stream = $zip->getStream('test.txt');

// 关闭zip文件

$zip->close();

$str = stream_get_contents($stream); //这里注意获取到的文本编码

var_dump($str);

}

三:修改压缩包内指定文件的文件名称及删除压缩包内指定文件$zip = new \ZipArchive;

if ($zip->open('test_new.zip') === true) {

//把压缩文件内索引为0的文件修改成newname.txt

$zip->renameIndex(0,'newname.txt');

//把压缩文件内的new.txt修改成newword.txt

$zip->renameName('new.txt','newword.txt');

//删除压缩文件内索引为0的文件

$zip->deleteIndex(0);

//删除压缩文件的test.png

$zip->deleteName('test.png');

// 关闭zip文件

$zip->close();

}

相关文章教程推荐:php教程

php压缩解压zip文件夹,php利用ZipArchive类实现文件压缩与解压相关推荐

  1. python生成多级文件夹_利用 python 遍历多级文件夹处理不同文件

    需求:近期,同事在处理文件的时候,常常需要从一堆文件中提取一些数据信息: 分析:由于每个文件夹下面的文件或文件夹多如牛毛,文件类型也很多种,需要针对不同文件类型做处理,人工处理是不现实的,只能用脚本处 ...

  2. linux 解压zip 空格,如何在linux系统下对文件夹名有空格的文件夹进行操作,linux空格...

    如何在linux系统下对文件夹名有空格的文件夹进行操作,linux空格 在Windows操作系统中可以轻易地创建\移动\删除文件夹名带有空格的文件夹, 而在linux则需要进行一些特殊的处理才能实现以 ...

  3. linux解压zip、bz、bz2、z、gz、tar(解包)

    linux解压zip.bz.bz2.z.gz.tar(解包) (2012-07-29 20:29:08) 转载▼ 标签: 杂谈 分类: Linux/Unix zip: 压缩: zip [-AcdDfF ...

  4. Ubuntu文件夹有锁标志(去除) 命令打包解包

    由于在root权限下下载的东西,所以在普通用户下有锁标志,虽说在root下什么都可以操作使用,只要切换到root账户操作就ok了,但是看着就很别扭,如何去除? 1.看到有网友说使用 sudo chmo ...

  5. canvas 将图形设置为button_将Excel设置为存放文件的文件夹:自动提醒直观摘要免压缩发微信...

    [友情提示]更多插入对象应用,敬请关注头条号@Excel财务VBA,了解后续文章介绍. 导读:一.文件夹的作用,二.win文件夹的局限,三.Excel准文件夹的应用需求,四.Excel准文件夹的设置方 ...

  6. QQ邮箱怎么发送文件夹 怎样在QQ邮箱里发送压缩文件夹

    有很多用户想要知道怎么样才能通过QQ邮箱来发送自己的一些文件压缩包,应该怎么操作呢?不要慌,现在小编就给大家分享一下,下面一起来学习操作步骤吧! 其实,无论何种邮箱都无法发送文件夹,都只能对文件进行操 ...

  7. zip 打包_Thinkphp6利用ZipArchive打包下载文件

    php中文网课程 每日17点准时技术干货分享 基础环境 系统环境:Windows10 x64 PHP集成环境:phpstudy PHP依赖管理工具:Composer (一) 下载tp6框架 compo ...

  8. 计算机文件夹快捷键加密视频,如何给文件夹设置密码 电脑

    加密内容以便保护数据 注意事项 1.注意只可以加密NTFS分区卷上的文件和文件夹,FAT分区卷上的文件和文件夹无效. 被压缩的文件或文件夹也可以加密.如果要加密一个压缩文件或文件夹,则该文件或文件夹将 ...

  9. 我的世界服务器皮肤怎么用文件夹,我的世界皮肤正文件,皮肤制作器怎么打开文件夹...

    打开versions,我的世界皮肤站怎么找皮肤文件夹里百面有个小茶壶形状的文件,用压度缩工具打开它,依次打知开assets,minecraft,,textures,entity,先将里面自带道的原皮肤 ...

  10. 新建一个文件夹服务器,云服务器中新建文件夹命令

    云服务器中新建文件夹命令 内容精选 换一换 部署提供可视化.一键式部署服务,支持并行部署和流水线无缝集成,实现部署环境标准化和部署过程自动化.本节通过以下五步介绍如何使用部署服务将项目代码部署到云主机 ...

最新文章

  1. 怎样用ug画铝型材_用UG画钻头,适合初学UG的小伙伴,快来学习吧!
  2. 微信小游戏开发教程-游戏实现1
  3. 特征选择方法之信息增益
  4. 【转】POJ-2104(K-th Number 划分树)
  5. Bootstrap 学习之js插件(模态框(Modal)插件)
  6. DeeplabV3+ 在自己环境下跑出现的错误
  7. git——^和~的区别(转)
  8. 基于 FFmpeg 的播放器 demo
  9. 从零开始学PowerShell(8)创建一个进度条
  10. python函数myproduct_OpenERP与Python 元编程
  11. MonoRail学习笔记十七:TransformFilter的使用
  12. js中改变this的指向,有apply、call和bind这三种方法
  13. Python解释器配置设置
  14. 软件开发技术文档编写规范
  15. uni中一些插件的使用
  16. 高效能人士的七个习惯 读书笔记
  17. JavaScript程序库jQuery学习笔记分享(二)jQuery对象和DOM操作,和其他js库冲突处理
  18. 荣耀play5t活力版和荣耀畅玩20哪个好 哪个更值得入手
  19. SYN 洪水攻击如何工作?
  20. python购物街竟价项目_python制作视频教程下载地址

热门文章

  1. 安川伺服驱动器的常用故障代码
  2. 二分图最大匹配(最大流)
  3. 微信语音终于可以转发了
  4. c语言函数定义的语法格式,C语言函数 -C语言函数定义的语法格式
  5. IEBrowser IE升级工具 下载
  6. Java 学生管理系统 GUI txt文件存储
  7. Linux系统开发|QT制作聊天软件实验报告
  8. Javaweb - JSP章节 - MVC和三层架构案例总练习(下) - “回显数据”-“修改数据”功能实现
  9. 最新消息!OKR周报新模板!
  10. VISIO2016的安装报错