当我将数据(53MB)写入文档目录时,当我直接通过应用程序支持路径检查时,不会写入数据。我这样编码,
- (BOOL)writeApplicationData:(NSData *)data toFile:(NSString *)fileName
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
if (!documentsDirectory) {
NSLog(@"Documents directory not found!");
return NO;
}
NSString *appFile = [documentsDirectory stringByAppendingPathComponent:fileName];
return ([data writeToFile:appFile atomically:YES]);
} 它运行正常,但是当我使用以下代码读取数据时,数据为空,请帮助吗?
- (NSData *)applicationDataFromFile:(NSString *)fileName {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *appFile = [documentsDirectory stringByAppendingPathComponent:fileName];
NSData *myData = [[[NSData alloc] initWithContentsOfFile:appFile] autorelease];
return myData;
}
答案 0 :(得分:1)
代码正在为我工作(在一个小的下载)。
有些想法,你是通过网络下载53MB的吗?也许你想在它完成之前阅读它?写入文件时的“原子”标志表示:
如果是,则将数据写入备份文件,然后 - 假设没有发生错误 - 将备份文件重命名为path指定的名称;否则,数据将直接写入路径。
如果您正在下载此异步并且无法使用部分结果,则可能需要等待它完成。否则你可以原子地设置:NO并读取部分结果。