iphone-创建zip文件引发泄漏

问题描述

创建zip文件引发泄漏
NSData * buffer = [fileHandle readDataOfLength:chunkSize];
                while ([buffer length] > 0)
                {
                    [streamBIG writeData:buffer];
                    offset += [buffer length];

                    [fileHandle seekToFileOffset:offset];
                    buffer = [fileHandle readDataOfLength:chunkSize];
                }

这段代码是用来zip大小为25-30MB的批量文件,但是引起了崩溃。

解决方案

试试自动释放:

           NSData * buffer = [fileHandle readDataOfLength:chunkSize];
            while ([buffer length] > 0)
            {
                @autoreleasepool
                {
                [streamBIG writeData:buffer];
                offset += [buffer length];

                [fileHandle seekToFileOffset:offset];
                buffer = [fileHandle readDataOfLength:chunkSize];
                }
            }

解决方案二:

改成这样试试:

do{
@autoreleasepool
{
NSData * buffer = [fileHandle readDataOfLength:chunkSize];
if ([buffer length] == 0)
break;
[streamBIG writeData:buffer];
offset += [buffer length];
[fileHandle seekToFileOffset:offset];
}
} while (true);

时间: 2025-01-25 11:03:07

iphone-创建zip文件引发泄漏的相关文章

Beyond Compare如何快速创建ZIP文件

  作为一款智能化的专业文件夹比较工具,Beyond Compare软件的功能也是相当丰富的,除了最具特色的文件夹以及文件比较之外,Beyond Compare也可以从正在进行的文件夹或者文件比较中创建ZIP文件.接下来就分享一下,实现新建ZIP文件的过程. 步骤一:打开Beyond Compare软件,选择文件夹比较会话操作,单击"浏览文件夹"按钮,选择需要比较的文件夹.分别单击显示"全部"."差别"."相同",查找文件差异

JAVA操作ZIP文件 收藏

JAVA操作ZIP文件 收藏  文章转自:http://www.abcjava.com/html/JAVA/JAVAjichu/2009/1018/1080.html  在网络传输多个文件的时候,如果一个一个传往往会非常耗时,而且也会消耗掉更多的计算机系统资源.如果我们将多个文件打包后再传输将会节约很多的计算机资源,这里,我将为大家展示如何读取.解压和创建ZIP文件,当然,这里只是简单介绍,关于zip文件有很多细节需要大家自己去实现.关于java对zip的操作,主要是用的java.util.zi

java.util.zip创建和读取zip文件的类

写了一个用java.util.zip创建和读取zip文件的类 跟大家分享一下 里面用了递归调用 呵呵 近期用了不少递归调用!有空总结一下! /** TestZip.java coding by Serol Luo. rollingpig@163.com 2003/07/03 http://www.chinaunix.net/forum/viewforum.php?f=26 转载请保留此信息 */ import java.util.*; import java.util.zip.*; import

php简单创建zip压缩文件的方法_php技巧

本文实例讲述了php简单创建zip压缩文件的方法.分享给大家供大家参考,具体如下: /* creates a compressed zip file */ function create_zip($files = array(),$destination = '',$overwrite = false) { //if the zip file already exists and overwrite is false, return false if(file_exists($destinati

Java创建ZIP压缩文件的方法_java

本文实例讲述了Java创建ZIP压缩文件的方法.分享给大家供大家参考.具体如下: 这里注意:建议使用org.apache.tools.zip.*包下相关类,否则可能会出现中文乱码问题. /** * 压缩文件夹 * @param sourceDIR 文件夹名称(包含路径) * @param targetZipFile 生成zip文件名 * @author liuxiangwei */ public static void zipDIR(String sourceDIR, String target

分享非常有用的Java程序 (关键代码) (三)---创建ZIP和JAR文件

原文:分享非常有用的Java程序 (关键代码) (三)---创建ZIP和JAR文件  import java.util.zip.*; import java.io.*; public class ZipIt { public static void main(String args[]) throws IOException { if (args.length < 2) { System.err.println("usage: java ZipIt Zip.zip file1 file2

php ZipArchive类创建和解压zip文件实例

也能直接读取zip压缩包内的内容,很方便,这里主要总结下读取和解压的过程. 解压一个包到指定目录  代码如下 复制代码 <?php $zip = new ZipArchive; if ($zip->open('test.zip') === TRUE) {   $zip->extractTo('/my/destination/dir/');   $zip->close();   echo 'ok'; } else {   echo 'failed'; } ?>   如果只是需要

IIS短文件和文件夹泄漏漏洞的分析

IIS是有微软使用微软windows功能扩展模块创建的一套web服务器应用程序,是世界上第三个最流行的服务器. 漏洞描述: 漏洞研究小组发现了一个微软IIS的漏洞,攻击者可以利用一个包含"~"的get请求,来让服务器上的文件和文件夹被泄漏. 影响版本: IIS 1.0, Windows NT 3.51 IIS 2.0, Windows NT 4.0 IIS 3.0, Windows NT 4.0 Service Pack 2 IIS 4.0, Windows NT 4.0 Option

ios-应用可以创建dropbox文件夹

问题描述 应用可以创建dropbox文件夹 创建了一个iphone程序,用来整合Dropbox SDK.但是在Dropbox中创建文件夹时报错.请高人指点一下应该怎么创建文件夹? 代码: (DBRestClient*)restClient { if (restClient1 == nil) { restClient1 = [[DBRestClient alloc] initWithSession:[DBSession sharedSession]]; restClient1.delegate =