`

用ZipArchive压缩文件夹

 
阅读更多

上次有篇博客记录了用ZipArchive压缩文件,但是那段代码有点问题,可以压缩根目录下的文件,但是无法压缩子目录下的文件:

NSArray *fileList = [fileManager contentsOfDirectoryAtPath:sourcePath error:nil];// 文件列表  
for(NSString *fileName in fileList){  
    NSString *filePath = [sourcePath stringByAppendingPathComponent:fileName];// 文件完整路径  
    [zipArchive addFileToZip:filePath newname:fileName];  
}

上面的contentsOfDirectoryAtPath方法,遍历了sourcePath目录,列出所有的文件和子目录。问题是子目录会被压缩成一个无后缀的文件,而不是被当做文件夹来处理。改进了一下,应该用下面的代码:

NSArray *subPaths = [fileManager subpathsAtPath:sourcePath];// 关键是subpathsAtPath方法 
for(NSString *subPath in subPaths){  
    NSString *fullPath = [sourcePath stringByAppendingPathComponent:subPath];  
    BOOL isDir;  
    if([fileManager fileExistsAtPath:fullPath isDirectory:&isDir] && !isDir)// 只处理文件  
    {  
        [zipArchive addFileToZip:fullPath newname:subPath];  
    }  
}

区别在于不是调用contentsOfDirectoryAtPath方法,而是调用subpathsAtPath方法,这会列出sourcePath下的所有文件和子目录,然后在下面的循环里,将文件写入压缩文件,不处理文件夹。注意newname要直接用subPath,这样会自动在压缩文件中保留子目录下的文件完整路径
分享到:
评论

相关推荐

    在iOS使用ZipArchive压缩和解压缩文件

    一个在iOS使用ZipArchive实现压缩和解压缩文件的demo

    php5内部函数ZipArchive压缩文件和文件夹

    php5内部函数ZipArchive压缩文件和文件夹,测试成功的可以使用的

    python压缩文件夹内所有文件为zip文件的方法

    本文实例讲述了python压缩文件夹内所有文件为zip文件的方法。分享给大家供大家参考。具体如下: 用这段代码可以用来打包自己的文件夹为zip,我就用这段代码来备份 import zipfile z = zipfile.ZipFile('my-...

    php压缩zip文件(多级目录,自定义目录名)

    NULL 博文链接:https://canlynet.iteye.com/blog/2364136

    php ZipArchive压缩函数详解实例

    在php中生成zip文件我们只要使用一个php zip压缩ZipArchive函数就可以了,下面小编来给大家总结两个实现一个是利用ZipArchive生成zip,另一个压缩文件夹下所有文件

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

    PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法这里就不说了,不同的平台开启PHP扩增的方法网上都有,如有疑问欢迎交流。这里整理一下...

    perl脚本(压缩文件夹下文件)上传服务器

    #一下是每个文件夹压缩,测试上传成功删除本地文件夹和zip foreach my $j (@data) { $zip = Archive::Zip->new(); $zip->addTree( "$get_name/$j", "$j", sub { /.*/ } ); my $status = $zip->writeToFileNamed...

    JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解

     3:并引用封装的ZipArchive.js ,(因为zip.js的api使用起来比较繁琐,所以自己封装实现了这个插件)  4:引用mime-types.js;  查看DEMO, 使用方式为: 运行下面代码 <!DOCTYPE html> <html

    PHP自带ZIP压缩、解压缩类ZipArchiv使用指南

    要使用该PHP扩展类,需要(PHP 5 >= 5.2.0, PECL zip >= 1.1.0),部分方法需要 PHP 5.2.+,且php.ini配置支持zip ...——————— ZipArchive对象常用方法介绍 ——————— 测试约定:  测试文件

    php ZipArchive实现多文件打包下载实例

    在本篇文章里我们给各位整理了关于php ZipArchive实现多文件打包下载实例以及相关代码,需要的朋友们可以学习下。

    asp.NET中实现文件的压缩和解压(3种方式)

    3、通过 System.IO.Compression 命名空间中新增的ZipArchive、ZipFile等类实现。 一、使用System.IO.Packaging压缩和解压 Package为一个抽象类,可用于将对象组织到定义的物理格式的单个实体中,从而实现可移植性与...

    php实现对文件压缩简单的方法

    $zip->open($filename,ZipArchive::CREATE); //打开压缩包 $zip->addFile($path,basename($path)); //向压缩包中添加文件 $zip->close(); //关闭压缩包 上述代码将c:/wamp/www/log.txt文件压缩生成了test....

    rar压缩软件.rar

    即使创建压缩文件时指定了 .zip 扩展名,它仍然是 RAR 格式的。Windows 用户 可以 WinRAR,它支持更多的压缩文件类型,包括 RAR 和 ZIP 格式。 WinRAR 提供了图形用户界面和命令行模式。虽然控制台 RAR 和图形...

    4d-plugin-zip:用于压缩和解压缩的4D插件

    特征Zip多个输入( C_TEXT或字符串化的C_COLLECTION )密码保护的zip(用于Mac Archive Utility的文件而不是文件夹) LZMA ZIP_7Z指定“ .7z”作为输出路径BZ2 ZIP_BZ2指定“ .bz2”作为输出路径AES加密的ZIP ZIP_...

    un-archive-my-folders:格式转换风格的 Windows 存档 - 不再有文件夹压缩综合症!

    如果你像我一样工作,你会想要这个: “绿巨人”=文件夹在这个文件夹中: HULK.BIN 和 HULK.CUE 和 HULK.WAV/屏幕截图/任何所以你已经精心制作了你的 HULK iso 并告诉 7-zip 压缩它。 它有什么作用,但是让“THE ...

    WINRAR5.0正式注册版

    b) ZIP 压缩的内存使用增加到大约 15 MB。 4. 恢复卷的创建和处理可以使用多个 CPU 核心来获得更高的处理速度。然而,一般硬盘 的寻道速度是恢复卷的一个限制因素,所以使用固态硬盘时效果会更明显。 5. 现在 ...

    (WIP) 消除文件(解)压缩的痛苦

    ouch a.zip b.tar.gz c.tar.bz2 -o new_folder压缩文件和目录compress子命令能够压缩文件和文件夹。最后一个参数将是输出文件。您还可以为此子命令使用c别名。所采用的压缩格式将根据输出文件的扩展名进行定义。# ...

    Drawer文件管理系统 v1.0.0.1(Release)

    4.服务器最好具有ZipArchive、Curl等功能。5.文件存储位置要有写入权限。安装须知默认访问安装目录的drawer.php文件,默认用户名和密码均为admin,直接访问即可进行安装。另外,为防止系统被篡改,建议根据drawer....

    GitHub上一些实用的JavaScript的文件压缩解压缩库推荐

    adm-zip支持archive和unarchive一个或多个文件或者整个文件夹的功能,使用非常的简单方便。 var adm_zip = require('adm-zip'); //creating archives var zip = new adm_zip(); zip.addLocalFolder('archiver')...

    使用Jupyter notebooks上传文件夹或大量数据到服务器

    因此目前想到一种办法,将文件压缩成zip包,然后再解压到工作目录 解压缩文件 import zipfile import os files = zipfile.ZipFile('homework.zip', 'r') files.extractall(os.getcwd()) files.close() ...

Global site tag (gtag.js) - Google Analytics