objective-c – NSFileManager createDirectoryAtPath:withIntermediateDirectories:不创建目录或创建错误

objective-c – NSFileManager createDirectoryAtPath:withIntermediateDirectories:不创建目录或创建错误,第1张

概述在我的应用程序中,当用户进行应用内购买时,应用程序需要下载zip文件并将其解压缩到应用程序的文档文件夹中. zip文件下载并可以解压缩.我正在使用 Objective Zip来解压缩存档.问题是,在尝试为每个文件创建文件夹路径时,永远不会创建文件夹,也没有错误. 以下是发生这种情况的部分的示例代码: // Create file managerNSFileManager *fileMgr = [ 在我的应用程序中,当用户进行应用内购买时,应用程序需要下载zip文件并将其解压缩到应用程序的文档文件夹中. zip文件下载并可以解压缩.我正在使用 Objective Zip来解压缩存档.问题是,在尝试为每个文件创建文件夹路径时,永远不会创建文件夹,也没有错误.

以下是发生这种情况的部分的示例代码:

// Create file managerNSfileManager *fileMgr = [NSfileManager defaultManager];//UnzipNsstring *applicationdocumentsDir = [NSSearchPathForDirectorIEsInDomains(NSdocumentDirectory,NSUserDomainMask,YES) objectAtIndex:0];Zipfile *unzipfile = [[Zipfile alloc] initWithfilename:[applicationdocumentsDir stringByAppendingPathComponent:[Nsstring stringWithFormat:@"%@.zip",@"MID America Oireachtas 2011"]] mode:ZipfileModeUnzip];NSArray *infos= [unzipfile ListfileInZipInfos];for (fileInZipInfo *info in infos) {    //NSLog(@"- %@ %@ %d (%d)",info.name,info.date,info.size,info.level);    // Locate the file in the zip    [unzipfile locatefileInZip:info.name];    // Expand the file in memory    ZipReadStream *read= [unzipfile readCurrentfileInZip];    NSMutableData *data= [[NSMutableData alloc] initWithLength:info.length];    int bytesRead = [read readDataWithBuffer:data];    [read finishedReading];    Nsstring *appSupportFolder = [NSSearchPathForDirectorIEsInDomains(NSdocumentDirectory,YES) lastObject];    Nsstring *pathfull = [appSupportFolder stringByAppendingPathComponent:info.name];    Nsstring *path = [[pathfull stringByDeletingLastPathComponent] copy];    NSError *errorw;    NSRange range = [path rangeOfString:@"__MACOSX"];    if (range.location == NSNotFound) {        NSLog(@"last: %@",[path lastPathComponent]);        if ([fileMgr createDirectoryAtPath:path withIntermediateDirectorIEs:YES attributes:nil error:&errorw]) {            NSLog(@"Create Folder: %@",path);            NSLog(@"Directory Win: %@",errorw);            if (![[pathfull pathExtension] isEqualToString:@""] && ![[[pathfull lastPathComponent] substringToIndex:1] isEqualToString:@"." ]) {                [data writetofile:pathfull atomically:NO];            }        }        else {            //NSLog(@"Create Folder: %@",path);            NSLog(@"Directroy Fail: %@",errorw);        }    }}[unzipfile close];//delete zip// For error informationNSError *error;if ([fileMgr removeItemAtPath:[applicationdocumentsDir stringByAppendingPathComponent:[Nsstring stringWithFormat:@"%@.zip",@"MID America Oireachtas 2011"]] error:&error] == YES) {    NSLog(@"file Deleted");}//delete zip// For error informationNSError *error;if ([fileMgr removeItemAtPath:[applicationdocumentsDir stringByAppendingPathComponent:[Nsstring stringWithFormat:@"%@.zip",@"My Zip"]] error:&error] == YES) {    NSLog(@"file Deleted");}

以下是日志文件的相关输出片段:

2012-01-04 17:12:51.509 WhatsMyStageOn[3232:15503] Create Folder: /Users/Brandon/library/Application Support/iPhone Simulator/5.0/Applications/436C2C49-D79B-4cda-B0AA-15BB98F6F75E/WhatsMyStageOn.app/    2012-01-04 17:12:51.510 WhatsMyStageOn[3232:15503] Directory Win: (null)    2012-01-04 17:12:51.510 WhatsMyStageOn[3232:15503] Create Folder: /Users/Brandon/library/Application Support/iPhone Simulator/5.0/Applications/436C2C49-D79B-4cda-B0AA-15BB98F6F75E/WhatsMyStageOn.app/documents/MID America Oireachtas 2011    2012-01-04 17:12:51.510 WhatsMyStageOn[3232:15503] Directory Win: (null)    2012-01-04 17:12:51.510 WhatsMyStageOn[3232:15503] Create Folder: /Users/Brandon/library/Application Support/iPhone Simulator/5.0/Applications/436C2C49-D79B-4cda-B0AA-15BB98F6F75E/WhatsMyStageOn.app/documents    2012-01-04 17:12:51.510 WhatsMyStageOn[3232:15503] Directory Win: (null)    2012-01-04 17:12:51.511 WhatsMyStageOn[3232:15503] Create Folder: /Users/Brandon/library/Application Support/iPhone Simulator/5.0/Applications/436C2C49-D79B-4cda-B0AA-15BB98F6F75E/WhatsMyStageOn.app/documents/__MACOSX    2012-01-04 17:12:51.511 WhatsMyStageOn[3232:15503] Directory Win: (null)    2012-01-04 17:12:51.511 WhatsMyStageOn[3232:15503] Create Folder: /Users/Brandon/library/Application Support/iPhone Simulator/5.0/Applications/436C2C49-D79B-4cda-B0AA-15BB98F6F75E/WhatsMyStageOn.app/documents/__MACOSX/MID America Oireachtas 2011    2012-01-04 17:12:51.511 WhatsMyStageOn[3232:15503] Directory Win: (null)    2012-01-04 17:12:51.511 WhatsMyStageOn[3232:15503] Create Folder: /Users/Brandon/library/Application Support/iPhone Simulator/5.0/Applications/436C2C49-D79B-4cda-B0AA-15BB98F6F75E/WhatsMyStageOn.app/documents/MID America Oireachtas 2011    2012-01-04 17:12:51.512 WhatsMyStageOn[3232:15503] Directory Win: (null)    2012-01-04 17:12:51.544 WhatsMyStageOn[3232:15503] Create Folder: /Users/Brandon/library/Application Support/iPhone Simulator/5.0/Applications/436C2C49-D79B-4cda-B0AA-15BB98F6F75E/WhatsMyStageOn.app/documents/MID America Oireachtas 2011/Attractions    2012-01-04 17:12:51.544 WhatsMyStageOn[3232:15503] Directory Win: (null)

阅读NSfileManager文档,这是应该在日志中输出的内容,但是,没有创建文件夹.

编辑:修复了不使用文档问题,仍然有与编辑前谴责相同的问题.

编辑:更新了工作解决方案的代码!

解决方法 你不应该写应用程序包本身.试试这个:

Nsstring *appSupportFolder = [NSSearchPathForDirectorIEsInDomains(NSdocumentDirectory,YES) lastObject];Nsstring *path = [appSupportFolder stringByAppendingPathComponent:info.name];
总结

以上是内存溢出为你收集整理的objective-c – NSFileManager createDirectoryAtPath:withIntermediateDirectories:不创建目录或创建错误全部内容,希望文章能够帮你解决objective-c – NSFileManager createDirectoryAtPath:withIntermediateDirectories:不创建目录或创建错误所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1002911.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存