当路径正确时,为啥 NSFIleManager -fileExistsAtPath 找不到现有文件?
Posted
技术标签:
【中文标题】当路径正确时,为啥 NSFIleManager -fileExistsAtPath 找不到现有文件?【英文标题】:Why can't NSFIleManager -fileExistsAtPath not find an existing file when path is correct?当路径正确时,为什么 NSFIleManager -fileExistsAtPath 找不到现有文件? 【发布时间】:2015-02-03 00:05:46 【问题描述】:我知道 ios 模拟器每次运行时都会在不同的目录中找到;考虑到这一点,我有这段代码,它为我提供了 Core Data sqlite 文件的目录:
// find current directory for saori.sqlite
NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *documentDirectory = [[fileManager URLsForDirectory:NSLibraryDirectory inDomains:NSUserDomainMask]firstObject];
NSString *sqliteFilePath = [[documentDirectory URLByAppendingPathComponent:@"Application Support/SalonBook/saori.sqlite"] absoluteString];
if ([fileManager fileExistsAtPath:sqliteFilePath])
[MagicalRecord cleanUp]; // set stack, etc to 'nil'
else
NSLog(@"\n\n-->sqlite files not found"); // log message "unable to find sqlite files
return;
这是 sqliteFilePath 对象的打印输出:
Printing description of sqliteFilePath:
file:///Users/rolfmarsh/Library/Developer/CoreSimulator/Devices/1EE69744-255A-45CD-88F1-63FEAD117B32/data/Containers/Data/Application/C8FF20F0-41E4-4F26-AB06-1F29936C2208/Library/Application%20Support/SalonBook/saori.sqlite
这是来自 Finder 的文件图像:
问题是:我去sqliteFilePath,saori.sqlite 文件确实在那里!为什么 -fileExistsAtPath 失败了?
【问题讨论】:
不知道为什么这被否决了。有内容的合法问题。 +1。 我的经历几乎相似。似乎如果我存储为路径,然后转换为绝对 URL,它会失败。但是,如果我存储绝对字符串,则不要使用 fileURLWithPath,而是使用 urlWithName: 它成功,认为只要我在正确的一半上它就会互换 【参考方案1】:因为它仍然是一个 URL。文件路径没有协议,所以你的路径前缀file:///
无效,无法解析。由于无效路径不包含任何文件,fileExistsAtPath:
返回NO
。
不过不用担心,您可以直接调用 path
而不是在 URL 对象上调用 absoluteString
,它会返回路径。
【讨论】:
不工作......你能给我举个例子,当你说“只是调用路径”时你指的是什么? (接受我的陈述,它会是什么样子?)对不起这个蹩脚的问题,但我不明白它会如何工作...... SD @spokane-dude 你不是打电话给absoluteString
,而是打电话给path
。
谢谢,谢谢!做到了...我在尝试遵循的一些示例中看到了 path 语句,但是在 iOS 文档中我找不到任何解释...再次感谢!
@spokane-dude 干杯!为了澄清这一点,absoluteString
只返回完整的 URL,但返回一个字符串。 path
只是返回 URL 的路径,不包含协议之类的东西。对于文件 URL,如果您不能直接使用文件 URL,这正是您想要的。
很棒的答案...感谢您抽出宝贵时间向我解释。也为你加油! :D以上是关于当路径正确时,为啥 NSFIleManager -fileExistsAtPath 找不到现有文件?的主要内容,如果未能解决你的问题,请参考以下文章
cookie的路径决定服务器在发送请求时候 是否决定发送 当路径匹配时候 则发送给服务器