雪豹引入了许多新的方法来使用NSURL对象来引用文件,而不是路径名或核心服务的FSRefs。
但是,有一项任务我找不到基于URL的方法:测试文件是否存在。我在找一个基于网址的-[NSFileManager fileExistsAtPath:
]版本。与该方法类似,如果URL描述了任何内容,无论是常规文件、目录还是其他内容,它都应该返回YES
。
我可以尝试查找各种resource values,但如果文件不存在,它们中的任何一个都不能明确保证不存在,并且如果它存在,其中一些(例如,NSURLEffectiveIconKey)可能会代价高昂。
我可以只使用NSFileManager的fileExistsAtPath:
,但如果有更现代的方法,我更喜欢使用它。
在Cocoa、CF或Core Services中,有没有一个简单的方法或函数可以保证/记录下来,告诉我给定的文件(或文件引用) URL是否引用了存在的文件系统对象?
发布于 2009-12-19 00:16:03
NSURL具有以下方法:
- (BOOL)checkResourceIsReachableAndReturnError:(NSError **)error
它“返回文件URL指向的资源是否可以访问”。
NSURL *theURL = [NSURL fileURLWithPath:@"/Users/elisevanlooij/nonexistingfile.php"
isDirectory:NO];
NSError *err;
if ([theURL checkResourceIsReachableAndReturnError:&err] == NO)
[[NSAlert alertWithError:err] runModal];
发布于 2011-01-20 18:38:32
在iOS上我找不到其他方法。
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"file.type"];
if ([[NSFileManager defaultManager] fileExistsAtPath:[storeURL path]]) {...}
发布于 2009-12-18 20:06:35
因为NSURL可以代表比本地文件系统更多的文件系统,所以我不认为有一种通用的方法可以可靠地测试它们的存在。至少,Cocoa基金会不包含这样的功能(据我所知)。
如果您只处理本地文件系统,我建议您为NSURL
或NSFileManager
创建一个带有urlExists:
消息的类别。它会将NSURL
转换为NSString
(标准化路径),然后调用[NSFileManager fileExistsAtPath:]
消息。
https://stackoverflow.com/questions/1927754
复制相似问题