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 格式化数字的时候注意数字的范围
Apr 13 PHP
PHP OPCode缓存 APC详细介绍
Oct 12 PHP
PHP备份数据库生成SQL文件并下载的函数代码
Feb 05 PHP
PHP中最容易忘记的一些知识点总结
Apr 28 PHP
XAMPP安装与使用方法详细解析
Nov 27 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
Apr 19 PHP
PHP微框架Dispatch简介
Jun 12 PHP
PHP文件锁函数flock()详细介绍
Nov 18 PHP
微信支付开发动态链接Native支付
Jul 12 PHP
postfixadmin忘记密码后的修改密码方法详解
Jul 20 PHP
php实现的mongoDB单例模式操作类
Jan 20 PHP
如何在Laravel之外使用illuminate组件详解
Sep 20 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 STRING 陷阱原理说明
2010/07/24 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
2016/04/17 PHP
php中引用符号(&)的使用详细介绍
2016/12/06 PHP
javascript event 事件解析
2011/01/31 Javascript
javascript 单例/单体模式(Singleton)
2011/04/07 Javascript
JavaScript可否多线程? 深入理解JavaScript定时机制
2012/05/23 Javascript
jquery移除、绑定、触发元素事件使用示例详解
2014/04/10 Javascript
jQuery+ajax实现动态执行脚本的方法
2015/01/27 Javascript
ES6中如何使用Set和WeakSet
2016/03/10 Javascript
JavaScript 不支持 indexof 该如何解决
2016/03/30 Javascript
简单理解vue中实例属性vm.$els
2016/12/01 Javascript
微信小程序switch开关选择器使用详解
2018/01/31 Javascript
JavaScript动态加载重复绑定问题
2018/04/01 Javascript
微信小程序实现人脸识别登陆的示例代码
2019/04/02 Javascript
微信小程序制作扭蛋机代码实例
2019/09/24 Javascript
在vue中通过render函数给子组件设置ref操作
2020/11/17 Vue.js
Vue实现指令式动态追加小球动画组件的步骤
2020/12/18 Vue.js
JavaScript如何实现防止重复的网络请求的示例
2021/01/28 Javascript
深入解答关于Python的11道基本面试题
2017/04/01 Python
pandas使用get_dummies进行one-hot编码的方法
2018/07/10 Python
PyCharm设置SSH远程调试的方法
2018/07/17 Python
Python实现的旋转数组功能算法示例
2019/02/23 Python
Python对象转换为json的方法步骤
2019/04/25 Python
Python数据分析pandas模块用法实例详解
2019/11/20 Python
利用keras加载训练好的.H5文件,并实现预测图片
2020/01/24 Python
Python 通过正则表达式快速获取电影的下载地址
2020/08/17 Python
详解python模块pychartdir安装及导入问题
2020/10/22 Python
python 实现弹球游戏的示例代码
2020/11/17 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
2021/01/09 Python
在线购买世界上最好的酒:BoozeBud
2018/06/07 全球购物
澳大利亚最好的电动自行车:Leon Cycle
2020/12/19 全球购物
几个人围成一圈的问题
2013/09/26 面试题
金融行业职业生涯规划范文
2014/01/17 职场文书
领导调研接待方案
2014/02/27 职场文书
科技活动周标语
2014/10/08 职场文书
使用numpy实现矩阵的翻转(flip)与旋转
2021/06/03 Python