【发布时间】:2011-03-14 07:13:01
【问题描述】:
我使用以下代码将文本文件写入 de Documents 文件夹:
NSArray *filePaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *fileDocumentsDirectory = [filePaths objectAtIndex:0];
NSString *fullPath = [fileDocumentsDirectory stringByAppendingPathComponent:self.fileName];
NSData *tmpData = [NSData dataWithBytes:self.content length:[self.content length]];
[tmpData writeToFile:appFile atomically:YES];
如果我直接用 NSData 的内容创建一个字符串,它可以工作,所以数据看起来没问题。我用以下方式检索文件:
NSString *fileContents = [[NSString alloc] initWithContentsOfFile:fullPath usedEncoding:nil error:nil];
或
NSString *fileContents = [NSString stringWithContentsOfFile:fullPath usedEncoding:&encoding error:&error];
或进入一个 NSData 并从那里进入一个字符串
NSData *fileContentsData = [NSData dataWithContentsOfFile:fullPath];
NSString *fileContents = [[NSString alloc] initWithData:fileContentsData encoding:NSUTF8StringEncoding];
在这两种情况下,fileContents 都是空的。我要疯了,我只是不明白为什么 fileContents 为空。我用 NSLog 检查了每个值,并且“self.content”包含值,NSData 包含相同的值...但尝试检索它们返回 null 或,尝试说 NSUTF16StringEncoding,我检索...中文字符,但不是 null。
它必须与编码相关,但 tmpData 使用 UTF-8 并从中初始化一个字符串,它就像一个魅力,问题似乎出在我读/写文件时。
我现在头晕,你能帮我一把吗?
提前致谢:)
编辑:我刚刚尝试使用以下代码从 URL 打开一个 .txt 文件:
NSURL *url = [[NSURL alloc] initWithString:tmpField.text];
NSURLRequest *req = [[NSURLRequest alloc] initWithURL:url];
NSHTTPURLResponse *response = nil;
NSError *error = nil;
NSData *responseData = [NSURLConnection sendSynchronousRequest:req
returningResponse:&response
error:&error];
if(response == nil) {
// TO BE CONTINUED
}
NSInteger statusCode = [response statusCode];
NSString *contentType = [[response allHeaderFields] objectForKey:@"Content-Type"];
if(statusCode >= 200 && statusCode < 300 && [contentType hasPrefix:@"text"]) {
NSString *payloadAsString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
我已经检查过了,程序到达了最后一行,但是 payloadAsString 是……没错,也是 nil。那我做错了什么?
【问题讨论】:
-
尝试使用 NSMacOSRomanStringEncoding 读取文件以进行更改 - 刚刚发生在我身上,症状完全相同。
-
按照这个建议,作为字符串“OAOAk”的内容,我收到的是“`+Ì”。我对此失去了理智,这没有任何意义,因为我没有在任何地方更改编码,“self.content”只是一个 UITextView.text。
标签: iphone objective-c