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项目的方法
Oct 09 PHP
ExtJS与PHP、MySQL实现存储的方法
Apr 02 PHP
php中将html中的br换行符转换为文本输入中的换行符
Mar 26 PHP
PHP获取MSN好友列表类的实现代码
Jun 23 PHP
详解PHP序列化反序列化的方法
Oct 27 PHP
php基于openssl的rsa加密解密示例
Jul 11 PHP
php中遍历二维数组并以表格的形式输出的方法
Jan 03 PHP
老生常谈PHP面向对象之注册表模式
May 26 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
Nov 13 PHP
php使用gearman进行任务分发操作实例详解
Feb 26 PHP
PHP 自动加载类原理与用法实例分析
Apr 14 PHP
PHP实现简易图形计算器
Aug 28 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动态图像的创建
2006/10/09 PHP
关于url地址传参数时字符串有回车造成页面脚本赋值失败的解决方法
2013/06/28 PHP
php ctype函数中文翻译和示例
2014/03/21 PHP
PHP实现执行外部程序的方法详解
2017/08/17 PHP
Django中的cookie与session操作实例代码
2017/08/17 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
2019/08/03 PHP
PHP设计模式(四)原型模式Prototype实例详解【创建型】
2020/05/02 PHP
IE6-IE9不支持table.innerHTML的解决方法分享
2012/09/14 Javascript
JavaScript版TAB选项卡效果实例
2013/08/16 Javascript
javascript 循环调用示例介绍
2013/11/20 Javascript
深入浅出ES6之let和const命令
2016/08/25 Javascript
Angular 4.x中表单Reactive Forms详解
2017/04/25 Javascript
JavaScript模拟文件拖选框样式v1.0的实例
2017/08/04 Javascript
vue 获取视频时长的实例代码
2019/08/20 Javascript
微信小程序可滑动月日历组件使用详解
2019/10/21 Javascript
详解Vue 项目中的几个实用组件(ts)
2019/10/29 Javascript
Javascript数组及类数组相关原理详解
2020/10/29 Javascript
[01:17]辉夜杯战队访谈宣传片—EHOME
2015/12/25 DOTA
Python中MYSQLdb出现乱码的解决方法
2014/10/11 Python
python使用Image处理图片常用技巧分析
2015/06/01 Python
Python中使用插入排序算法的简单分析与代码示例
2016/05/04 Python
对python GUI实现完美进度条的示例详解
2018/12/13 Python
python根据txt文本批量创建文件夹
2020/12/08 Python
ipad上运行python的方法步骤
2019/10/12 Python
Python高级property属性用法实例分析
2019/11/19 Python
利用Python代码实现一键抠背景功能
2019/12/29 Python
Python动态声明变量赋值代码实例
2019/12/30 Python
如何用Anaconda搭建虚拟环境并创建Django项目
2020/08/02 Python
精细化工应届生求职信
2013/11/17 职场文书
开业庆典邀请函
2014/01/08 职场文书
社会公德演讲稿
2014/05/20 职场文书
母亲节寄语大全
2015/02/27 职场文书
甜美蛋糕店的创业计划书模板,拿来即用!
2019/08/21 职场文书
golang 实现两个结构体复制字段
2021/04/28 Golang
Grafana可视化监控系统结合SpringBoot使用
2022/04/19 Redis
python 使用pandas读取csv文件的方法
2022/12/24 Python