在我的代码fileExistsAtPath:中的某一点为我已确认存在的文件返回NO。我一直在摸不着头脑,无法弄清楚为什么它不起作用,所以把它改成了这个代码,因为这个目录绝对存在但是如果它不会被创建的话。
NSError* err = nil;
NSURL *dir = [[NSFileManager defaultManager] URLForDirectory:NSApplicationSupportDirectory
inDomain:NSUserDomainMask
appropriateForURL:nil
create: YES
error:&err];
BOOL exists = [[NSFileManager defaultManager] fileExistsAtPath:[dir absoluteString]];
运行此代码后,应用程序目录文件夹存在且err为0,但存在为NO。
这怎么可能?
TIA
答案 0 :(得分:133)
您应该使用[dir path]
,而不是[dir absoluteString]
。
答案 1 :(得分:4)
我把头靠在墙上几个小时。显然,在xcode中的每次运行中,app目录路径都在变化。 UUID的一部分。 因此,不是存储完整路径,而是最终保持路径后缀 并使用隐含的任何存储类作为前缀:临时,缓存 或文件: - [
答案 2 :(得分:1)
路径和网址之间存在区别。 unix表示中的路径是您的特定文件或目录所在的位置。与//Clicks the first result
webDriver.findElement(By.xpath(".//div[@id='rso']/div[1]/div/div[1]/div//h3[1]/a")).click();
一个网址不仅包含位置,还包含方案,例如:http://或https://,在我们的例子中是文件网址"/Users/username/Desktop/myfile.txt"
(file:///Users/username/Desktop/myfile.txt)
或fileExistsAtPath
等方法需要参数中的路径而不是网址。
虽然像removeItemAtPath
这样的方法需要网址。
使用copyItemAtURL:toURL:error:(NSError * _Nullable *)error
对象的path
属性来检索路径。 NSURL
为您提供了该计划的路径。