0

NSFilemanager 正在为以下内容返回 true,此时应该还没有任何此类文件。怎么了?

    if([myManager fileExistsAtPath:[[self documentsDirectory] stringByAppendingPathComponent:@"Music/songlist.txt"]]){

NSLog(@"file is there");

}
4

3 回答 3

7

的文档NSFileManager似乎建议不要检查文件是否存在,而只是尝试读取文件并优雅地处理任何错误(例如文件未找到错误)。您所描述的内容听起来不像是竞争条件(这是文档建议试图规避的内容),但是如果您只是尝试加载文件而不是检查它是否存在,会发生什么?例如,您可以尝试以下操作:

NSError *error;
NSStringEncoding encoding;
NSString *fileContents = [NSString stringWithContentsOfFile:fileName
                                               usedEncoding:&encoding
                                                      error:&error];

if (fileContents == nil)
{
    NSLog (@"%@", error);
}
else
{
    NSLog (@"%@", fileContents);
}

如果你得到一个包含所有文件内容的字符串,那么文件显然就在那里。如果您收到错误消息,则说明有问题myManager

于 2010-03-16T20:16:43.497 回答
0

这对我来说按预期工作。

 NSFileManager *myManager = [NSFileManager defaultManager];
NSString *documentsDirectory = NSHomeDirectory();

if([myManager fileExistsAtPath:[documentsDirectory stringByAppendingPathComponent:@"Music/songlist.txt"]]){

    NSLog(@"file is there");

}
于 2010-03-17T01:51:01.583 回答
0

把它打印出来,看看它是否是你所期望的。

NSLog(@"Directory: %@", [[self documentsDirectory] stringByAppendingPathComponent:@"Music/songlist.txt"]];

另外,检查您是否正确定义了 myManager。

于 2010-03-16T16:36:22.603 回答