nill从dataWithContentsOfFile absoluteString返回

时间:2015-04-07 15:45:13

标签: ios objective-c cocoa-touch

我在nsstring类中使用writeToUrl方法保存文本文件。数据被保存。我通过打开文件确认了它,但是当我打电话

NSData *tempData = [NSData dataWithContentsOfFile:[tempFileURL absoluteString]];

我得到tempData的nill值。顺便说一下,在检索数据时,我必须使用[tempFileURL absoluteString]。

NSString *testString = @"Hello World";
NSString *fileName = @"TestFile.txt";
NSString *folderName = @"FolderName";

NSURL *documentsURL = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
NSURL *localFolder = [documentsURL URLByAppendingPathComponent:folderName isDirectory:YES];
[[NSFileManager defaultManager] createDirectoryAtURL:localFolder withIntermediateDirectories:YES attributes:nil error:NULL];
NSURL *tempFileURL = [localFolder URLByAppendingPathComponent:fileName];

NSError *error = nil;

[testString writeToURL:tempFileURL
                atomically:YES
                  encoding:NSUTF8StringEncoding
                     error:&error];
NSData *tempData = [NSData dataWithContentsOfFile:[tempFileURL absoluteString]];

2 个答案:

答案 0 :(得分:2)

当您在本地文件系统中有文件URL并且想要获取该文件的路径时,应该使用path方法。不要使用absoluteStringabsoluteString将在开头包含file://方案,该方案在路径中无效。

答案 1 :(得分:0)

错误是读取文件和路径。 URL和路径之间存在不匹配。

使用:

NSData *tempData = [NSData dataWithContentsOfFile:[tempFileURL path] options:0 error:&error];

NSData *tempData = [NSData dataWithContentsOfURL:tempFileURL options:0 error:&error];

dataWithContentsOfURL