php利用ZipArchive类操作文件的实例

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类实现文件压缩与解压的详细内容,感谢大家的学习和对我们的支持。

(0)

相关推荐

  • php使用ZipArchive函数实现文件的压缩与解压缩

    PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法这里就不说了,不同的平台开启PHP扩增的方法网上都有,如有疑问欢迎交流.这里整理一下利用php zipArchive进行文件的压缩与解压缩的常用的示例供参考. 一.解压缩zip文件 $zip=new ZipArchive;//新建一个ZipArchive的对象 if($zip->open('test.zip')===TRUE){ $zip->extr

  • php利用ZipArchive类操作文件的实例

    ZipArchive类是专门用于文件的压缩与解压操作的类,通过压缩文件可以达到节省磁盘空间的目的,并且压缩文件体积更小,便于网络传输. 在ZipArchive类中我们主要使用如下方法: 1:open(打开一个压缩包文件) $zip = new \ZipArchive; $zip->open('test_new.zip', \ZipArchive::CREATE) 参数说明: 第一个参数:要打开的压缩包文件 第二个参数: ZIPARCHIVE::OVERWRITE总是创建一个新的文件,如果指定的z

  • Path类 操作文件类的实例

    // Path类 IO命名空间 静态类 不能创建对象类名. string str =@"E:\C#程序设计基础入门教程\(第十一天)\122\22\nee.txt"; ////int index=str.LastIndexOf ("\\")//最后一出现的位置 ////str =str.Substring (index +1);//拿到最后一个文件 ////Console.WriteLine(str); Console.WriteLine(Path.GetFileN

  • Java NIO Path接口和Files类配合操作文件的实例

    Path接口 1.Path表示的是一个目录名序列,其后还可以跟着一个文件名,路径中第一个部件是根部件时就是绝对路径,例如 / 或 C:\ ,而允许访问的根部件取决于文件系统: 2.以根部件开始的路径是绝对路径,否则就是相对路径: 3.静态的Paths.get方法接受一个或多个字符串,字符串之间自动使用默认文件系统的路径分隔符连接起来(Unix是 /,Windows是 \ ),这就解决了跨平台的问题,接着解析连接起来的结果,如果不是合法路径就抛出InvalidPathException异常,否则就

  • Java利用File类创建文件的示例代码

    只需要调用该类的一个方法createNewFile(),但是在实际操作中需要注意一些事项,如判断文件是否存在,以及如何向新建文件中写入数据等. import java.io.*; public class CreateNewFile{ //该方法用于创建文件,参数分别是文件路径和文件名.文件内容,如:myfile.doc HelloJava! public void createNewFile(String fileDirectoryAndName,String fileContent){ tr

  • python调用函数、类和文件操作简单实例总结

    本文实例总结了python调用函数.类和文件操作.分享给大家供大家参考,具体如下: 调用函数有三种方式 一,导入整个模块(所有函数) 导入 import module_name 调用 module_name.function_name() 在这种情况中,不会出现下面两种方式的缺点,即具有相同函数名的问题,因为一个文件中不存在两个相同的文件名.但缺点是能不清晰显示出使用到的函数,调用的时候也需要重复写模块名. 二,导入模块中单个或多个函数 导入 from module_name import fu

  • C#的File类实现文件操作实例详解

    C#对文件的操作相当方便,主要涉及到四个类:File.FileInfo.Directory.DirectoryInfo,前两个提供了针对文件的操作,后两个提供了针对目录的操作,类图关系如下: 本文举例详述了File类的用法.File中提供了许多的静态方法,使用这些静态方法我们可以方便的对文件进行读写查等基本操作. 具体用法说明及相关示例如下: 1.读文件: // 打开一个文件,将文件的内容读入一个字符串,然后关闭该文件. public static byte[] ReadAllBytes(str

  • Android利用listview控件操作SQLite数据库实例

    在本实例中,首先我们利用SQLiteOpenHelper类建立一个数据库,并写好增.删.查等方法,通过SimpleCursorAdapter连接listview实现数据库的增加.查询以及长按删除的功能. 首先,我们先认识一下什么是SQLiteOpenHelper类. Android为了操作SQlite数据库,提供了SQLiteDatabase类,其内封装了insert .delete.update .query .执行SQL命令等操作.同时又为SQLiteDatabase提供了一个辅助类,SQL

  • 利用ASP输出excel文件实例讲解

    在asp中利用excel的一个方法是将excel文件作为一个数据库进行链接,然后的操作和对access数据库操作类似.但是这个方法不是总能有用的,应为excel不是关系型的数据库.对于一个固定格式,这个格式里有复杂的单元格合并,边框线条样式,还有图案,单元格之间还有公式关系等等的,我想最容易理解的就是在后台打开一个已有设定好模板的文件,然后在需要的地方插入数据,保存,输出... ... 这里提到的这种方法是直接建立一个excel对象,在后台可以更方便的对excel文档进行各种操作. 服务器端还必

  • php的ZipArchive类用法实例

    本文实例讲述了php的ZipArchive类用法,分享给大家供大家参考.具体如下: 通常来说,php5.2开始支持ZipArchive类,php4只能使用zip函数.其实在官方实现zip类之前,已经有大牛贡献了打包解压zip文件的方法.现在php包含了ZipArchive类,当然优先使用.使用该类能创建和解压zip文件,也能直接读取zip压缩包内的内容,很方便,这里主要总结下读取和解压的过程. 解压一个包到指定目录: 复制代码 代码如下: <?php $zip = new ZipArchive;

  • 基于PHP的加载类操作以及其他两种魔术方法的应用实例

    实例如下所示: <?php 加载类 //include("./Ren.class.php"); //include "./Ren.class.php"; include_once("./Ren.class.php"); include_once("./Ren.class.php"); $f = new Ren(); $f->test(); require("./Ren.class.php");

随机推荐