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 相关文章推荐
PHP5.2下chunk_split()函数整数溢出漏洞 分析
Jun 06 PHP
深入解析php模板技术原理【一】
Jan 10 PHP
PHP学习之输出字符串(echo,print,printf,print_r和var_dump)
Apr 17 PHP
PHP中SESSION使用中的一点经验总结
Mar 30 PHP
php中最简单的字符串匹配算法
Dec 16 PHP
PHP SPL标准库之接口(Interface)详解
May 11 PHP
JSON用法之将PHP数组转JS数组,JS如何接收PHP数组
Oct 08 PHP
php实现中文转数字
Feb 18 PHP
微信随机生成红包金额算法php版
Jul 21 PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 PHP
PHP针对redis常用操作实例详解
Aug 17 PHP
php+redis实现消息队列功能示例
Sep 19 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
PHP+JS无限级可伸缩菜单详解(简单易懂)
2007/01/02 PHP
php与php MySQL 之间的关系
2009/07/17 PHP
利用php实现禁用IE和火狐的缓存问题
2012/12/03 PHP
php删除文件夹及其文件夹下所有文件的函数代码
2013/01/23 PHP
php读取目录及子目录下所有文件名的方法
2014/10/20 PHP
百度地图API使用方法详解
2015/08/25 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
2016/09/11 PHP
php变量与数组相互转换的方法(extract与compact)
2016/12/02 PHP
Javascript实例教程(19) 使用HoTMetal(2)
2006/12/23 Javascript
利用Ext Js生成动态树实例代码
2008/09/08 Javascript
判断脚本加载是否完成的方法
2009/05/26 Javascript
jquery 注意事项与常用语法小结
2010/06/07 Javascript
CSS和Javascript简单复习资料
2010/06/29 Javascript
表单元素与非表单元素刷新区别详细解析
2013/11/06 Javascript
jquery获取元素索引值index()示例
2014/02/13 Javascript
javascript在网页中实现读取剪贴板粘贴截图功能
2014/06/07 Javascript
Javascript中typeof 用法小结
2015/05/12 Javascript
BootStrap 下拉菜单点击之后不会出现下拉菜单(下拉菜单不弹出)的解决方案
2016/12/14 Javascript
Vue 2.0中生命周期与钩子函数的一些理解
2017/05/09 Javascript
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
2017/09/21 Javascript
浅析vue-router jquery和params传参(接收参数)$router $route的区别
2018/08/03 jQuery
vue实现移动端悬浮窗效果
2018/12/01 Javascript
JavaScript中的ES6 Proxy的具体使用
2019/06/16 Javascript
在layer弹层layer.prompt中,修改placeholder的实现方法
2019/09/27 Javascript
python实现自动重启本程序的方法
2015/07/09 Python
Django中的Signal代码详解
2018/02/05 Python
TensorFlow模型保存/载入的两种方法
2018/03/08 Python
python使用Turtle库绘制动态钟表
2018/11/19 Python
Python常用库大全及简要说明
2020/01/17 Python
在主流系统之上安装Pygame的方法
2020/05/20 Python
给校长的建议书600字
2014/05/15 职场文书
低碳环保演讲稿
2014/08/28 职场文书
2014年保管员工作总结
2014/11/18 职场文书
2019年XX公司的晨会制度及流程!
2019/07/23 职场文书
pd.drop_duplicates删除重复行的方法实现
2022/06/16 Python