文件存在但无法打开?

时间:2012-11-15 08:03:58

标签: iphone ios

我使用的保存力学:

    NSMutableData *data = [[NSMutableData alloc] init];
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
    [archiver encodeObject:self forKey:@"Save"];
    [archiver finishEncoding];
    [data writeToFile:filePath atomically:YES];
    [archiver release];
    [data release];

我用过

[[NSFileManager defaultManager] fileExistsAtPath:savePath];

[[NSFileManager defaultManager] contentsOfDirectoryAtPath:[SynchronizedData createPath] error:&error]

检查我的文件是否存在。他们确认文件存在。

但是我无法使用相同的目录路径加载文件

    //NSData *encodedData = [[NSFileManager defaultManager] contentsAtPath:[SynchronizedData createPath]];

    NSData *encodedData = [[[NSData alloc] initWithContentsOfFile:tempFilePath] autorelease];

    if (encodedData == nil) {
        NSLog(@"Save cannot open while loading!");
        return nil;
    }

以上编码数据,均返回nil。 (自动释放不是问题,我已经检查过了)

任何想法有什么不对?

我在previous thread中发现了类似的情况,我尝试再次保留我的tempFilePath,没关系,问题仍然存在。


我用比上面更简单的机制完成了保存。

从目录中获取NSData仍然没有解决问题。可能是由于@paxdiablo提到的Read Permission。

因此我使用“Documents”文件夹而不是“Library”。 NSData open没有错误。

1 个答案:

答案 0 :(得分:1)

文件可以存在但仍然无法读取。您应该首先检查该文件的权限。

另外,使用initWithContentsOfFile:options:error:变体来回复错误 - 希望能够告诉您是否存在问题。

根据你所看到的评论:

  

可可错误257

它似乎是权限问题。如果您查看Foundation constants,您会看到:

  

NSFileReadNoPermissionError = 257

表示您无权读取该文件。