以下是我的代码我需要检查文件目录中是否存在文件,但是以下API在任何情况下都不会返回true,但是文件目录中会创建文件。请检查我正在做的任何错误。我搜索过另一个说这个API“fileExistsAtPath”应该可以工作,但它在我的情况下不起作用。请帮帮我。
NSString *recordFile=[NSString stringWithFormat:@"MyFile.acc",data.uid];
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString *documentDr = [documentPaths objectAtIndex:0]; // WHY 0 ?
NSString *uniquePath = [documentDr stringByAppendingPathComponent:recordFile];
if([[NSFileManager defaultManager] fileExistsAtPath: uniquePath])
{
NSLog(@"File found")
}
else {
NSLog(@"No File to play");
}
谢谢, 索尼
答案 0 :(得分:3)
可能你的路径不正确。您要查找的文件的名称应该是什么?如果您有@"MyFile1.acc"
,@"MyFile2.acc"
等(其中1,2是data.uid
值),请尝试使用此功能:
NSString *recordFile=[NSString stringWithFormat:@"MyFile%i.acc",data.uid];
答案 1 :(得分:1)
在定义uniquePath或
时,尝试在documentDr之后附加“/”NSString *recordFile = [NSString stringWithFormat:@"MyFile%@", data.uid];
...
if([NSBundle pathForResource:recordFile ofType:@"acc" inDirectory:documentDr])
答案 2 :(得分:0)
我注意到的第一个错误是第一条指令。 为什么将'data.uid'作为参数传递给格式字符串?假设'data.uid'是某种整数,那么......中应该至少有'%d'。
我查看了Apple文档,特别是that statement,其中说
此方法返回的目录可能不存在。
您可以尝试使用NSFileManager方法获取当前目录路径,然后测试文件是否存在(或者在以后可以轻松检索的位置创建目录)。
其他路径怎么样?你写了'为什么0?',我问你同样的问题。尝试循环遍历数组元素,每次测试文件是否存在。
答案 3 :(得分:0)
代码应该有效。您的文件很可能不存在。保存时,您是否正确使用文件名中的大小写? 此外,我现在仍然不知道文件名是什么,正如已经说过的那样,你的初始帖子中的第一行没有给出正确的格式字符串。 在检查试图存在之前尝试:
[[NSString stringWithString:@"test"] writeToFile: uniquePath atomically:YES];
那应该在路径上创建一个文件,你看,fileExists有效。
答案 4 :(得分:0)
我尝试了很多东西,但结果是我不得不删除应用程序,清理所有目标,然后再次重建。奇怪的是,我的新资源不会被复制到应用程序。它通常发生在文件中,当我添加它们时,我选择了“为任何添加的文件夹创建文件夹引用”。