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脚本的10个技巧(3)
Oct 09 PHP
队列在编程中的实际应用(php)
Sep 04 PHP
根据ip调用新浪api获取城市名并转成拼音
Mar 07 PHP
PHP错误Cannot use object of type stdClass as array in错误的解决办法
Jun 12 PHP
wamp安装后自定义配置的方法
Aug 23 PHP
PHP使用pcntl_fork实现多进程下载图片的方法
Dec 16 PHP
php检查字符串中是否有外链的方法
Jul 29 PHP
php根据用户语言跳转相应网页
Nov 04 PHP
PHP 接入支付宝即时到账功能
Sep 18 PHP
PHP使用strrev翻转中文乱码问题的解决方法
Jan 13 PHP
laravel 出现command not found问题的解决方案
Oct 23 PHP
php实现JWT(json web token)鉴权实例详解
Nov 05 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
咖啡常见的种类
2021/03/03 新手入门
php中用文本文件做数据库的实现方法
2008/03/27 PHP
PHP中if和or运行效率对比
2014/12/12 PHP
php、java、android、ios通用的3des方法(推荐)
2016/09/09 PHP
PHP网站自动化配置的实现方法(必看)
2017/05/27 PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
2020/03/03 PHP
jQuery ctrl+Enter shift+Enter实现代码
2010/02/07 Javascript
新老版本juqery获取radio对象的方法
2010/03/01 Javascript
JavaScript setTimeout和setInterval的使用方法 说明
2010/03/25 Javascript
Google排名中的10个最著名的 JavaScript库
2010/04/27 Javascript
在JavaScript中监听IME键盘输入事件
2011/05/29 Javascript
JavaScript插入动态样式实现代码
2012/02/22 Javascript
关于js遍历表格的实例
2013/07/10 Javascript
JavaScript 实现打印,打印预览,打印设置
2014/12/30 Javascript
js去除浏览器默认底图的方法
2015/06/08 Javascript
完美实现八种js焦点轮播图(上篇)
2016/07/18 Javascript
深入理解requestAnimationFrame的动画循环
2016/09/20 Javascript
JavaScript中arguments和this对象用法分析
2018/08/08 Javascript
Vue点击切换颜色的方法
2018/09/13 Javascript
koa-router路由参数和前端路由的结合详解
2019/05/19 Javascript
微信小程序工具函数封装
2019/10/28 Javascript
vue+element-ui表格封装tag标签使用插槽
2020/06/18 Javascript
js实现跳一跳小游戏
2020/07/31 Javascript
[03:48]DOTA2完美大师赛主赛事第二日精彩集锦
2017/11/24 DOTA
[45:16]完美世界DOTA2联赛循环赛 IO vs FTD BO2第二场 11.05
2020/11/06 DOTA
Java中重定向输出流实现用文件记录程序日志
2015/06/12 Python
Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例
2017/08/07 Python
python判断所输入的任意一个正整数是否为素数的两种方法
2019/06/27 Python
Python 类的私有属性和私有方法实例分析
2019/09/29 Python
用pip给python安装matplotlib库的详细教程
2021/02/24 Python
医院总经理职责
2013/12/26 职场文书
学生干部的自我评价分享
2014/01/18 职场文书
高考1977观后感
2015/06/04 职场文书
大学生村官驻村工作心得体会
2016/01/23 职场文书
python基础之while循环语句的使用
2021/04/20 Python
中国古风插画师排行榜:夏达第一,第三是阴阳师姑获鸟皮肤创作者
2022/03/18 国漫