首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么在创建新文件时使用NSFileManager而不是只使用NSData的writeToFile:atomically: method?

为什么在创建新文件时使用NSFileManager而不是只使用NSData的writeToFile:atomically: method?
EN

Stack Overflow用户
提问于 2012-02-27 22:41:30
回答 2查看 14.1K关注 0票数 20

考虑以下两个代码示例:

代码语言:javascript
复制
    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];

代码语言:javascript
复制
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:

EN

回答 2

Stack Overflow用户

发布于 2013-03-08 18:56:05

据我所知,在Rob阅读答案之后,大多数文件操作都可以使用共享文件管理器对象来执行。因为每条路径只生成once.So,所以如果我错了,重写situation.Please是正确的。

票数 0
EN

Stack Overflow用户

发布于 2015-11-04 18:48:34

最近,我发现在对代码进行单元测试时,writeToFile:atomically:并不适合。为了让测试更舒适,我不得不将NSFileManager注入到类中,在测试中,我使用模拟文件管理器来验证行为。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9466865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档