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 5.3.0 安装分析心得
Aug 07 PHP
php 字符串替换的方法
Jan 10 PHP
浅析HTTP消息头网页缓存控制以及header常用指令介绍
Jun 28 PHP
PHP中is_file不能替代file_exists的理由
Mar 04 PHP
Laravel 4.2 中队列服务(queue)使用感受
Oct 30 PHP
php jsonp单引号转义
Nov 23 PHP
PHP实现从远程下载文件的方法
Mar 12 PHP
详解PHP中的Traits
Jul 29 PHP
Yii中表单用法实例详解
Jan 05 PHP
PHP+MySql+jQuery实现的"顶"和"踩"投票功能
May 21 PHP
php微信公众号开发(3)php实现简单微信文本通讯
Dec 15 PHP
PHP解决高并发的优化方案实例
Dec 10 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设计模式之适配器模式代码实例
2015/05/11 PHP
php版微信发红包接口用法示例
2016/09/23 PHP
阿里云的WindowsServer2016上部署php+apache
2018/07/17 PHP
laravel高级的Join语法详解以及使用Join多个条件
2019/10/16 PHP
Code:findPosX 和 findPosY
2006/12/20 Javascript
关于Aptana Studio生成自动备份文件的解决办法
2009/12/23 Javascript
javascript textContent与innerText的异同分析
2010/10/22 Javascript
jquery异步调用页面后台方法‏(asp.net)
2011/03/01 Javascript
两种方法实现文本框输入内容提示消失
2013/03/17 Javascript
调整小数的格式保留小数点后两位
2014/05/14 Javascript
简单易用的倒计时js代码
2014/08/04 Javascript
jQuery实现图片左右滚动特效
2020/04/20 Javascript
深入浅析Node.js 事件循环
2015/12/20 Javascript
JS实用技巧小结(屏蔽错误、div滚动条设置、背景图片位置等)
2016/06/16 Javascript
微信开发 js实现tabs选项卡效果
2016/10/28 Javascript
原生js实现弹出层效果
2017/01/20 Javascript
AngularJS 仿微信图片手势缩放的实例
2017/09/28 Javascript
jQuery实现获取table中鼠标click点击位置行号与列号的方法
2017/10/09 jQuery
解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题
2020/07/24 Javascript
echarts实现晶体球面投影的实例教程
2020/10/10 Javascript
python smtplib模块发送SSL/TLS安全邮件实例
2015/04/08 Python
以一个投票程序的实例来讲解Python的Django框架使用
2016/02/18 Python
简单谈谈python中的语句和语法
2017/08/10 Python
python实现顺序表的简单代码
2018/09/28 Python
使用Pandas对数据进行筛选和排序的实现
2019/07/29 Python
python打造爬虫代理池过程解析
2019/08/15 Python
python django生成迁移文件的实例
2019/08/31 Python
Python常用模块sys,os,time,random功能与用法实例分析
2020/01/07 Python
python中tkinter窗口位置\坐标\大小等实现示例
2020/07/09 Python
Ancheer官方户外和运动商店:销售电动自行车
2019/08/07 全球购物
俄罗斯家居用品购物网站:Евродом
2020/11/21 全球购物
早会主持词
2014/03/17 职场文书
新人入职感言
2015/07/31 职场文书
SQL Server代理:理解SQL代理错误日志处理方法
2021/06/30 SQL Server
MySQL Shell import_table数据导入的实现
2021/08/07 MySQL
python开发的自动化运维工具ansible详解
2021/08/07 Python