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中使用Oracle数据库(6)
Oct 09 PHP
php intval的测试代码发现问题
Jul 27 PHP
基于php-fpm的配置详解
Jun 03 PHP
腾讯QQ微博API接口获取微博内容
Oct 30 PHP
使用 PHPStorm 开发 Laravel
Mar 24 PHP
win7安装php框架Yii的方法
Jan 25 PHP
php读取本地json文件的实例
Mar 07 PHP
PHP基于SPL实现的迭代器模式示例
Apr 22 PHP
laravel获取不到session的三种解决办法【推荐】
Sep 16 PHP
Laravel修改验证提示信息为中文的示例
Oct 23 PHP
详解no input file specified 三种解决方法
Nov 29 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
Apr 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
PHP+DBM的同学录程序(5)
2006/10/09 PHP
php预定义常量
2006/12/25 PHP
Smarty变量调节器失效的解决办法
2014/08/20 PHP
php中的字符编码转换函数用法示例
2014/10/20 PHP
利用PHP函数计算中英文字符串长度的方法
2014/11/11 PHP
PHP中通过fopen()函数访问远程文件示例
2014/11/18 PHP
PHP使用flock实现文件加锁的方法
2015/07/01 PHP
PHP+JS三级菜单联动菜单实现方法
2016/02/24 PHP
PHP页面输出时js设置input框的选中值
2016/09/30 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
javascript 按键事件(兼容各浏览器)
2013/12/20 Javascript
结合JQ1.9通过js正则判断各种浏览器版本的方法
2013/12/30 Javascript
利用Jquery实现可多选的下拉框
2014/02/21 Javascript
javascript中返回顶部按钮的实现
2015/05/05 Javascript
JavaScript实现复制内容到粘贴板代码
2016/03/31 Javascript
使用jQuery制作遮罩层弹出效果的极简实例分享
2016/05/12 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
2016/08/01 Javascript
a标签跳转到指定div,jquery添加和移除class属性的实现方法
2016/10/10 Javascript
js实现3d悬浮效果
2017/02/16 Javascript
浅谈jquery拼接字符串效率比较高的方法
2017/02/22 Javascript
轻松学习Javascript闭包
2017/03/01 Javascript
使用bootstraptable插件实现表格记录的查询、分页、排序操作
2017/08/06 Javascript
Vuejs 实现简易 todoList 功能 与 组件实例代码
2018/09/10 Javascript
python设计模式大全
2016/06/27 Python
python直接访问私有属性的简单方法
2016/07/25 Python
Python数据可视化库seaborn的使用总结
2019/01/15 Python
Python @property及getter setter原理详解
2020/03/31 Python
北美最大的零售退货翻新商:VIP Outlet
2019/11/21 全球购物
法律专业学生的自我评价
2014/02/07 职场文书
《花木兰》教学反思
2014/04/09 职场文书
运动会口号大全
2014/06/07 职场文书
2015大学生求职信范文
2015/03/20 职场文书
新员工试用期工作总结2015
2015/05/28 职场文书
和谐拯救危机观后感
2015/06/15 职场文书
教师培训简讯
2015/07/20 职场文书
Django中session进行权限管理的使用
2021/07/09 Python