NSFilemanager 正在为以下内容返回 true,此时应该还没有任何此类文件。怎么了?
if([myManager fileExistsAtPath:[[self documentsDirectory] stringByAppendingPathComponent:@"Music/songlist.txt"]]){
NSLog(@"file is there");
}
NSFilemanager 正在为以下内容返回 true,此时应该还没有任何此类文件。怎么了?
if([myManager fileExistsAtPath:[[self documentsDirectory] stringByAppendingPathComponent:@"Music/songlist.txt"]]){
NSLog(@"file is there");
}
的文档NSFileManager
似乎建议不要检查文件是否存在,而只是尝试读取文件并优雅地处理任何错误(例如文件未找到错误)。您所描述的内容听起来不像是竞争条件(这是文档建议试图规避的内容),但是如果您只是尝试加载文件而不是检查它是否存在,会发生什么?例如,您可以尝试以下操作:
NSError *error;
NSStringEncoding encoding;
NSString *fileContents = [NSString stringWithContentsOfFile:fileName
usedEncoding:&encoding
error:&error];
if (fileContents == nil)
{
NSLog (@"%@", error);
}
else
{
NSLog (@"%@", fileContents);
}
如果你得到一个包含所有文件内容的字符串,那么文件显然就在那里。如果您收到错误消息,则说明有问题myManager
。
这对我来说按预期工作。
NSFileManager *myManager = [NSFileManager defaultManager];
NSString *documentsDirectory = NSHomeDirectory();
if([myManager fileExistsAtPath:[documentsDirectory stringByAppendingPathComponent:@"Music/songlist.txt"]]){
NSLog(@"file is there");
}
把它打印出来,看看它是否是你所期望的。
NSLog(@"Directory: %@", [[self documentsDirectory] stringByAppendingPathComponent:@"Music/songlist.txt"]];
另外,检查您是否正确定义了 myManager。