- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在我的应用中,当用户进行应用内购买时,应用需要下载一个 zip 文件并将其解压缩到应用的文档文件夹中。下载 zip 文件并解压缩。我正在使用 Objective Zip解压缩文件。问题是当尝试为每个文件创建文件夹路径时,文件夹永远不会创建,也没有错误。
这是发生这种情况的部分的一些示例代码:
// Create file manager
NSFileManager *fileMgr = [NSFileManager defaultManager];
//Unzip
NSString *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, NSUserDomainMask, 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 information
NSError *error;
if ([fileMgr removeItemAtPath:[applicationDocumentsDir stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.zip",@"Mid America Oireachtas 2011"]] error:&error] == YES) {
NSLog(@"File Deleted");
}
//delete zip
// For error information
NSError *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 文档,这是应该在日志中输出的内容,但是,没有创建文件夹。
编辑:修复了不使用文档的问题,仍然存在与编辑前谴责的相同问题。
编辑:更新了工作解决方案的代码!
最佳答案
您不应该写入应用程序的 bundle 本身。试试这个:
NSString *appSupportFolder = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *path = [appSupportFolder stringByAppendingPathComponent:info.name];
关于objective-c - NSFileManager createDirectoryAtPath :withIntermediateDirectories: Not creating directories or creating errors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8734964/
我在文档目录中有一个名为a.caf的文件。我想在用户在 UITextField 中输入内容并按下更改时重命名它(在 UITextField 中输入的文本应该是新文件名)。 我该怎么做? 最佳答案 您可
我正在尝试为我的应用程序添加 iCloud 支持,并且一直在关注 Apple 自己的 iCloud Design Guide .该指南说我应该通过调用 [NSFileManager ubiquityI
如果我使用 NSFileManager:URLForDirectory 获取沙箱的应用程序支持目录,那么我会得到以下 URL: file://localhost/var/mobile/Applicat
在 iOS 中,我知道有时候 [[NSFileManager alloc] init] 更好——特别是当 [NSFileManager defaultManager] 可能不是线程安全的时候。引用:h
我想对 NSFilePosixPermissions 使用八进制权限(用于 chmod)。 这是我现在所做的: NSFileManager *manager = [NSFileManager defa
我正在尝试编写一些代码来检查或更改(不是恶意或类似的)用户设备上安装的其他 iOS 应用程序。特别是在越狱设备上。在越狱设备上,我能够查看应用程序沙箱之外的文件,当我使用 NSFileManager
在我的 iPhone 应用程序中,我使用默认的 NSFileManager 来复制和移动一些数据。数据量可能有几 MB,因此可能需要几秒钟才能完成复制。如果用户现在启动复制过程并退出应用程序,我可以继
你能发现这行代码中的错误吗?它返回零!该应用程序完全沙盒化,但启用了下载文件夹访问。 NSArray*array = [[NSFileManager defaultManager] contentsO
我有一个动态库,我假设它使用 NSFileManager 的实例。对于我的应用程序,我需要使用 NSFileManager 写入与动态库相同的文件。如果动态库的 NSFileManager 和我的 N
我在我编写的以下代码片段中发现了内存泄漏 NSFileManager *fileManager=[[NSFileManager alloc] init]; fileList=[[fileManager
我需要从应用程序的资源文件夹中复制一些示例文件,并将它们放在应用程序的文档文件夹中。我想出了附加的代码,它编译得很好,但不起作用。我引用的所有目录都存在。我不太确定我做错了什么,有人可以指出我正确的方
如何删除目录中的所有内容而不删除目录本身?我想基本上清空一个文件夹,但保持它(和权限)完好无损。 最佳答案 例如通过使用目录枚举器: NSFileManager *fileManager = [[NS
复制文件时,我想在我的iOS应用程序中包含OSX行为:如果存在,则在其上附加一个计数器: myFile.png => myFile 1.png myFile20.png => myFile20 1.p
我正在尝试创建两个日志文件并将第二个文件中的内容替换为第一个文件中的内容。 我在 AppDelegate 中创建日志的代码 NSArray *paths3 = NSSearchPathForDi
我使用的应用程序可以从互联网下载图像并缓存它们,以便在用户在图像之间来回滑动时实现更快的性能。 我想在关闭 UIViewController 时清除缓存文件夹。所以我创建了这个静态方法。但是,我不断收
我正在使用 NSFileManager 搜索“index.png”文件。如果文件不存在,那么我将尝试显示默认图像。我正在使用下面的代码,但它不起作用。我在这里做错了什么吗? NSString *pat
有没有办法告诉,如果调用 [[NSFileManager defaultManager] removeItemAtPath:filePath error:NULL]; 会失败吗? 最佳答案 我想你想看
我一直在尝试使用 NSFileManager 将图像缓存到我的沙盒应用程序的缓存目录中。不幸的是,我的代码似乎不起作用。 - (BOOL)saveImageToCacheFolder { NS
我正在尝试将数据保存到 NSFileManager 创建的目录中,但是当我尝试检索数据和 NSLog 时,我得到的是空值。另外,当您创建一个目录时,是否意味着您在指定的 url 路径下创建了一个文件夹
我在 Apple 托管我的应用内购买内容。我已成功下载内容,现在我想将其保存在设备中。 [[NSFileManager defaultManager] removeItemAtPath:dstPath
我是一名优秀的程序员,十分优秀!