从文件中读取字符串返回nil

时间:2013-09-04 08:24:39

标签: iphone ios objective-c nsstring

我尝试用以下文件读取文件中的字符串:

NSString* path = [[NSBundle mainBundle] pathForResource:@"dirty" ofType:@"txt"];
NSString* content = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&err];

我得到的字符串是零。在我得到的错误中:

Error Domain=NSCocoaErrorDomain Code=261 "The operation couldn’t be completed. (Cocoa error 261.)" UserInfo=0x21063410 {NSFilePath=/var/mobile/Applications/78889F89-B83C-480C-A246-999152EE757C/Myapp.app/dirty.txt, NSStringEncoding=4}

知道这是什么问题吗?

4 个答案:

答案 0 :(得分:4)

如上所述,Cocoa error 261NSFileReadInapplicableStringEncodingError,这意味着文件的编码与您在API中传递的编码不同。

对于希伯来语语言编码,请尝试this answer

NSString* content = [[NSString alloc] initWithContentsOfFile:path encoding:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingWindowsHebrew) error:&err];

希望有所帮助!

答案 1 :(得分:1)

错误似乎是编码问题..

如果您不知道文件的编码,可以尝试以下方法:

- (id)initWithContentsOfFile:(NSString *)path usedEncoding:(NSStringEncoding *)enc error:(NSError **)error

参考HERE

和 试试这样的事情:

NSError *error = nil;
NSStringEncoding encoding;

NSString *my_string = [[NSString alloc] initWithContentsOfURL:url
                                                 usedEncoding:&encoding 
                                                        error:&error];

答案 2 :(得分:0)

试试这个。

NSString* content = [[NSString alloc] initWithContentsOfFile:path encoding:nil error:&err];

或更改“编码”类型希望它能解决您的问题。

答案 3 :(得分:0)

试试这个

NSString *pathtest = [[NSBundle mainBundle] pathForResource:@"dirty" ofType:@"txt"];
NSString* content = [[NSString alloc] initWithContentsOfFile:pathtest encoding:NSASCIIStringEncoding error:&error];
NSLog(@"Test: %@",content);