在nsDocumentDirectory中下载一个zip文件,取消归档并阅读它

时间:2013-04-11 17:42:03

标签: iphone objective-c cocoa

我在URL上有一个.zip文件,我想下载它,取消归档并将其保存到nsdocument目录中,无需任何UI或用户交互。然后回读。

2 个答案:

答案 0 :(得分:1)

在.h文件中声明此变量

NSMutableData *responseData;

将此代码写入viewDidLoad方法 此方法将开始从给定URL下载文件

NSURL *serverURL = [NSURL URLWithString:@"your file URL here"];
NSURLRequest *request = [NSURLRequest requestWithURL:serverURL];
NSURLConnection *cn = [NSURLConnection connectionWithRequest:request delegate:self];
[cn start];

在.m文件中实现此Delegate方法

#pragma mark - NSURLConnection Delegate Methods
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    NSLog(@"%s",__FUNCTION__);
    responseData = nil;
}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    NSLog(@"%s",__FUNCTION__);
    responseData = [[NSMutableData alloc] initWithCapacity:0];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    NSLog(@"%s",__FUNCTION__);
    [responseData appendData:data];
}


- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSLog(@"%s",__FUNCTION__);

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *docDirPath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
    NSString *filePath = [docDirPath stringByAppendingPathComponent:@"DownloadedZip.zip"];

    // Save file to Document Directory
    [responseData writeToFile:filePath atomically:YES];
    responseData = nil;
}

将项目下载到unArchive zip文件here,并在文档目录中保存文件后放置unArchive代码

答案 1 :(得分:0)

首先将文件下载到您的设备。

NSString *URLstring = @"http://your.download.URL";
NSURL  *url = [NSURL URLWithString:URLstring];
NSData *urlData = [NSData dataWithContentsOfURL:url];

然后将其写入设备。如果您想要保存设备上的路径以及要保存的文件名,请记住添加文件扩展名(.zip)。

[urlData writeToFile:thePath atomically:YES];

然后你可以使用ziparchiveminizip之类的东西来解压缩它。有几种开源解决方案。这两个过去对我有用。很容易使用。

之后,使用解压缩的数据做任何你想做的事都很简单。并做一些大扫除并从手机中删除zip文件。