我使用以下代码将文本文件写入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并从那里到带有
的StringNSData *fileContentsData = [NSData dataWithContentsOfFile:fullPath];
NSString *fileContents = [[NSString alloc] initWithData:fileContentsData encoding:NSUTF8StringEncoding];
在这两种情况下,fileContents都为null。我疯了,我只是看不出为什么fileContents为null。我用NSLog检查了每个值,“self.content”包含值,NSData包含相同的值...但是尝试检索它们返回null OR,尝试使用NSUTF16StringEncoding,我检索...中文字符,但不是null。 / p>
它必须是与编码相关的东西,但是tmpData使用UTF-8并从中初始化一个String,就像一个魅力一样,问题似乎是当我读/写文件时。
我现在晕了,你能帮我一把吗?
提前致谢:)
编辑:我刚尝试使用以下代码从网址打开.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是......那是对的,也是零。我做错了什么?
答案 0 :(得分:2)
self.content
的类型是什么?如果是NSString
,则使用-[NSString dataUsingEncoding:NSUTF8StringEncoding]
方法代替-[NSData initWithBytes:]
获取NSData
对象。