我使用以下代码打开一个文件的内容并将其保存到另一个文件。运行时,原始文件长度为793,但保存的文件长度为0。我也尝试过只复制文件。似乎什么都不起作用。
是否缺少对文档目录的某种权限?
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]);发布于 2010-07-20 21:51:27
整个区块都是不必要的。你所需要的是:
NSString *fp=[[NSBundle mainBundle] pathForResource:@"contacts" ofType:@"gram"];
NSString *gramString = [[NSString alloc] initWithContentsOfFile:fp
encoding:NSUTF8StringEncoding
error:&error];您当然不希望尝试使用硬编码路径直接访问应用程序包中的文件,因为不能保证该文件在每个构建中都位于相同的位置。
在您已有的代码中,您希望使用与写入相同的编码常量进行读取。你用NSUnicodeStringEncoding写,但你用NSUTF8StringEncoding读。这些应该是重叠的,但如果您知道所使用的确切编码,为什么还要冒险呢?
https://stackoverflow.com/questions/3290005
复制相似问题