对不起,今天愚蠢的问题2。是否可以确定App Bundle中是否包含文件?我可以访问文件没问题,即
NSString *pathAndFileName = [[NSBundle mainBundle] pathForResource:fileName ofType:@"plist"];
但是无法弄清楚如何首先检查文件是否存在。
此致
戴夫
答案 0 :(得分:68)
[[NSFileManager defaultManager] fileExistsAtPath:pathAndFileName];
答案 1 :(得分:15)
这段代码对我有用......
NSString *pathAndFileName = [[NSBundle mainBundle] pathForResource:fileName ofType:nil];
if ([[NSFileManager defaultManager] fileExistsAtPath:pathAndFileName])
{
NSLog(@"File exists in BUNDLE");
}
else
{
NSLog(@"File not found");
}
希望它会帮助某人......
答案 2 :(得分:4)
pathForResource将返回nil。使用NSFileManager再次检查是多余的。
<强>的OBJ-C:强>
if (![[NSBundle mainBundle] pathForResource:@"FileName" ofType:@"plist"]) {
NSLog(@"The path could not be created.");
return;
}
Swift 4:
guard Bundle.main.path(forResource: "FileName", ofType: "plist") != nil else {
print("The path could not be created.")
return
}
答案 3 :(得分:3)
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"filename"];
if(![fileManager fileExistsAtPath:path])
{
// do something
}
答案 4 :(得分:1)
与@Arkady相同,但使用Swift 2.0:
首先,在+
上调用方法以帮助创建资源的路径:
mainBundle()
然后,调用guard let path = NSBundle.mainBundle().pathForResource("MyFile", ofType: "txt") else {
NSLog("The path could not be created.")
return
}
上的方法来检查文件是否存在:
defaultManager()