php利用ZipArchive类操作文件的实例


Posted in PHP onJanuary 21, 2020

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执行其他一致性测试。

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利用ZipArchive类实现文件压缩与解压的详细内容,感谢大家的学习和对三水点靠木的支持。

PHP 相关文章推荐
坏狼的PHP学习教程之第1天
Jun 15 PHP
php 图片上传类代码
Jul 17 PHP
php join函数应用
May 04 PHP
深入分析使用mysql_fetch_object()以对象的形式返回查询结果
Jun 05 PHP
php实现执行某一操作时弹出确认、取消对话框
Dec 30 PHP
Yii中render和renderPartial的区别
Sep 03 PHP
CI框架学习笔记(一) - 环境安装、基本术语和框架流程
Oct 26 PHP
PHP中实现Bloom Filter算法
Mar 30 PHP
PHP框架Laravel中实现supervisor执行异步进程的方法
Jun 07 PHP
php7新特性的理解和比较总结
Apr 14 PHP
PHP的介绍以及优势详细分析
Sep 05 PHP
Laravel 5.2 文档 数据库 ―― 起步介绍
Oct 21 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
Dec 30 #PHP
Laravel 集成微信用户登录和绑定的实现
Dec 27 #PHP
PHP单元测试配置与使用方法详解
Dec 27 #PHP
PHP全局使用Laravel辅助函数dd
Dec 26 #PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
Dec 25 #PHP
PHP高并发和大流量解决方案整理
Dec 24 #PHP
thinkphp5实现微信扫码支付
Dec 23 #PHP
You might like
php对图像的各种处理函数代码小结
2013/07/08 PHP
PHP删除数组中指定下标的元素方法
2018/02/03 PHP
Laravel框架搜索分页功能示例
2019/02/01 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
2019/04/02 PHP
PHP 出现 http500 错误的解决方法
2021/03/09 PHP
jquery实现每个数字上都带进度条的幻灯片
2013/02/20 Javascript
使用jquery获取网页中图片高度的两种方法
2013/09/26 Javascript
Node.js和PHP根据ip获取地理位置的方法
2014/03/14 Javascript
jQuery插件pagination实现无刷新分页
2016/05/21 Javascript
常用Javascript函数与原型功能收藏(必看篇)
2016/10/09 Javascript
javascript 缓冲运动框架的实现
2017/09/29 Javascript
Node 自动化部署的方法
2017/10/17 Javascript
[02:25]DOTA2英雄基础教程 虚空假面
2014/01/02 DOTA
Python自定义函数的创建、调用和函数的参数详解
2014/03/11 Python
Python科学计算环境推荐——Anaconda
2014/06/30 Python
Python3.6.0+opencv3.3.0人脸检测示例
2018/05/25 Python
python3发送邮件需要经过代理服务器的示例代码
2019/07/25 Python
Django项目之Elasticsearch搜索引擎的实例
2019/08/21 Python
pycharm中import呈现灰色原因的解决方法
2020/03/04 Python
详解修改Anaconda中的Jupyter Notebook默认工作路径的三种方式
2021/01/24 Python
Scrapy实现模拟登录的示例代码
2021/02/21 Python
浅析移动设备HTML5页面布局
2015/12/01 HTML / CSS
丽笙酒店官方网站:Radisson Hotels
2019/05/07 全球购物
说一下Linux下有关用户和组管理的命令
2014/08/18 面试题
大学生个人总结的自我评价
2013/10/05 职场文书
师恩难忘教学反思
2014/04/27 职场文书
办护照工作证明
2014/10/01 职场文书
2014党支部对照检查材料思想汇报
2014/10/05 职场文书
关于群众路线的心得体会
2014/11/05 职场文书
妈妈别哭观后感
2015/06/08 职场文书
2016年度先进班组事迹材料
2016/03/01 职场文书
python 中[0]*2与0*2的区别说明
2021/05/10 Python
python工具dtreeviz决策树可视化和模型可解释性
2022/03/03 Python
Oracle数据库中通用的函数实例详解
2022/03/25 Oracle
Python+OpenCV实现图片中的圆形检测
2022/04/07 Python
vue封装数字翻牌器
2022/04/20 Vue.js