我使用以下代码打开文件的内容并将其保存到另一个文件中。 当它运行时,原始文件长度是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]);
答案 0 :(得分:1)
这整个块是不必要的。您所需要的只是:
NSString *fp=[[NSBundle mainBundle] pathForResource:@"contacts" ofType:@"gram"];
NSString *gramString = [[NSString alloc] initWithContentsOfFile:fp
encoding:NSUTF8StringEncoding
error:&error];
您当然不希望尝试使用硬编码路径直接访问应用程序包中的文件,因为不保证文件在每个构建中都位于相同的位置。
在您拥有的代码中,您希望使用与编写时相同的编码常量进行读取。您使用NSUnicodeStringEncoding
撰写,但使用NSUTF8StringEncoding
阅读。这些应该重叠但是如果你知道使用的确切编码,为什么要抓住机会呢?