【发布时间】:2012-03-17 00:50:19
【问题描述】:
考虑以下两个代码示例:
NSData *imgData = UIImagePNGRepresentation(imgFull);
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"itemImg_%i.png", timestamp]]; //add our image to the path
[imgData writeToFile:fullPath atomically:YES];
和
NSData *imgData = UIImagePNGRepresentation(imgFull);
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"itemImg_%i.png", timestamp]]; //add our image to the path
NSFileManager *fileManager = [NSFileManager defaultManager];
[fileManager createFileAtPath:fullPath contents:imgData attributes:nil];
第二个示例需要一行额外的代码和 NSFileManager 对象的初始化,而第一个示例只是让 NSData 对象imgData 将自身写入文件。第一个示例的另一个优点是它可以覆盖已存在的同名文件。
我的问题是:在创建新文件时,在什么情况下你真正想使用 NSFileManager 及其方法createFileAtPath:contents:attributes:?
【问题讨论】:
-
根据我的经验,NSData 的 writeToFile 默认不会覆盖。 NSFileManager 的 createFileAtPath 也没有属性:nil。 NSDictionary方法的attributes信息即将发布,说明不常用。
标签: iphone objective-c ios cocoa-touch nsfilemanager