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 相关文章推荐
浅谈Windows下 PHP4.0与oracle 8的连接设置
Oct 09 PHP
PHP Mysql编程之高级技巧
Aug 27 PHP
通过PHP的内置函数,通过DES算法对数据加密和解密
Jun 21 PHP
基于PHP CURL获取邮箱地址的详解
Jun 03 PHP
php json_encode值中大括号与花括号区别
Sep 30 PHP
11个PHPer必须要了解的编程规范
Sep 22 PHP
php实现的SESSION类
Dec 02 PHP
PHP实现的简易版图片相似度比较
Jan 07 PHP
Zend Framework教程之模型Model用法简单实例
Mar 04 PHP
微信公众号开发之获取位置信息php代码
Jun 13 PHP
yii框架数据库关联查询操作示例
Oct 14 PHP
tp5.1 实现setInc字段自动加1
Oct 18 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操作XML作为数据库的类
2010/12/19 PHP
使用PHP Socket写的POP3类
2013/10/30 PHP
CodeIgniter与PHP5.6的兼容问题
2015/07/16 PHP
php通过文件头判断格式的方法
2016/05/28 PHP
基于thinkPHP框架实现留言板的方法
2016/10/17 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
Yii框架日志记录Logging操作示例
2018/07/12 PHP
PHP设计模式(五)适配器模式Adapter实例详解【结构型】
2020/05/02 PHP
12个非常有创意的JavaScript小游戏
2010/03/18 Javascript
javascript 设计模式之单体模式 面向对象学习基础
2010/04/18 Javascript
JavaScript初学者需要了解10个小技巧
2010/08/25 Javascript
javascript返回顶部的按钮实现方法
2016/01/09 Javascript
JavaScript对Json的增删改属性详解
2016/06/02 Javascript
NodeJS整合银联网关支付(DEMO)
2016/11/09 NodeJs
js获取浏览器和屏幕的各种宽度高度
2017/02/22 Javascript
Vue实现动态响应数据变化
2017/04/28 Javascript
解决vue2.x中数据渲染以及vuex缓存的问题
2017/07/13 Javascript
关于Promise 异步编程的实例讲解
2017/09/01 Javascript
JavaScript中click和onclick本质区别与用法分析
2018/06/07 Javascript
Vue用v-for给循环标签自身属性添加属性值的方法
2018/10/18 Javascript
vue 基于element-ui 分页组件封装的实例代码
2018/12/10 Javascript
在vue中获取微信支付code及code被占用问题的解决方法
2019/04/16 Javascript
Vue 实现一个简单的鼠标拖拽滚动效果插件
2020/12/10 Vue.js
[01:37]PWL S2开团时刻DAY1&2——这符有毒
2020/11/20 DOTA
Python学习笔记之os模块使用总结
2014/11/03 Python
Python实现Mysql数据库连接池实例详解
2017/04/11 Python
解决Mac安装scrapy失败的问题
2018/06/13 Python
CSS3 border-radius圆角的实现方法及用法详解
2020/09/14 HTML / CSS
全球航班旅行搜索网站:Cheapflights
2017/05/19 全球购物
美国婴童服装市场上的领先品牌:Carter’s
2018/02/08 全球购物
幼儿园毕业寄语
2014/04/03 职场文书
大学学风建设方案
2014/05/04 职场文书
2014四风问题对照检查材料范文
2014/09/15 职场文书
能让Python提速超40倍的神器Cython详解
2021/06/24 Python
JavaScript中的宏任务和微任务详情
2021/11/27 Javascript
PYTHON 使用 Pandas 删除某列指定值所在的行
2022/04/28 Python