首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSString writeToFile的麻烦

NSString writeToFile的麻烦
EN

Stack Overflow用户
提问于 2010-07-20 20:44:19
回答 1查看 985关注 0票数 0

我使用以下代码打开一个文件的内容并将其保存到另一个文件。运行时,原始文件长度为793,但保存的文件长度为0。我也尝试过只复制文件。似乎什么都不起作用。

是否缺少对文档目录的某种权限?

代码语言:javascript
复制
NSError *error;
    NSString *basePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString* nGram = [basePath stringByAppendingPathComponent:@"contacts.gram"];
NSString *oGram = [basePath stringByAppendingPathComponent:@"/../vText.app/model/lm/TAR9230/contacts.gram"];
      NSString *gramString = [[NSString alloc] initWithContentsOfFile:oGram  encoding:NSUTF8StringEncoding error:&error];
      BOOL ok = [gramString writeToFile:nGram atomically:NO encoding:NSUnicodeStringEncoding error:&error];
      if(!ok) NSLog(@"Mayday!");
      NSLog(@"%d",[gramString length]);
      gramString = [[NSString alloc] initWithContentsOfFile:nGram  encoding:NSUTF8StringEncoding error:&error];
      NSLog(@"%d",[gramString length]);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-20 21:51:27

整个区块都是不必要的。你所需要的是:

代码语言:javascript
复制
NSString *fp=[[NSBundle mainBundle] pathForResource:@"contacts" ofType:@"gram"];
NSString *gramString = [[NSString alloc] initWithContentsOfFile:fp  
                                                       encoding:NSUTF8StringEncoding 
                                                          error:&error];

您当然不希望尝试使用硬编码路径直接访问应用程序包中的文件,因为不能保证该文件在每个构建中都位于相同的位置。

在您已有的代码中,您希望使用与写入相同的编码常量进行读取。你用NSUnicodeStringEncoding写,但你用NSUTF8StringEncoding读。这些应该是重叠的,但如果您知道所使用的确切编码,为什么还要冒险呢?

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

https://stackoverflow.com/questions/3290005

复制
相关文章

相似问题

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