fileExistsAtPath:对于存在的文件返回NO
在我的代码fileExistsAtPath中的一个点:正在返回NO我确认存在的文件。 我一直在挠头,不知道为什么它不工作,所以把它改为这个代码,因为这个目录完全存在,但如果它不被创build。
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,但存在为否。
怎么会这样?
TIA
你应该使用[dir path]
,而不是[dir absoluteString]
。
我几个小时就把我的头撞在墙上。 显然,在xcode的每一个运行中,应用程序目录path都在改变。 它的UUID部分。 因此,而不是存储完整path我结束了坚持path后缀和前缀与任何存储类暗示:临时,caching或文件: – [
path和url有区别。 unix表示中的path是您的特定文件或目录所在的位置。 像"/Users/username/Desktop/myfile.txt"
一个url不仅包含位置,而且还包括scheme,例如:http://或https://,在我们的例子中是一个文件url (file:///Users/username/Desktop/myfile.txt)
像fileExistsAtPath
或removeItemAtPath
这样的方法需要参数中的path而不是url。
而像copyItemAtURL:toURL:error:(NSError * _Nullable *)error
需要一个url。
使用NSURL
对象的path
属性来检索path。 absoluteString
为您提供了该scheme的path。