在iphone应用中打开文件,NSFileManager isReadableFileAtPath 返回 NO
代码:
-(BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
if (url != nil && [url isFileURL]) {
NSString* documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
if ( [[NSFileManager defaultManager] isReadableFileAtPath:[url absoluteString]] ) {
NSLog(@"READABLE!");
[[NSFileManager defaultManager] copyItemAtPath:[url absoluteString] toPath:[documentsPath stringByAppendingString:@"/timecode.xml"] error:nil];
} else {
NSLog(@"NOT READABLE!");
}
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:[documentsPath stringByAppendingString:@"/timecode.xml"]];
if (fileExists) {
NSLog(@"THERE!");
} else {
NSLog(@"NOT THERE!");
}
}
}
不知为啥如果我从邮箱应用(还有一些其他应用)打开文件到我自己的文件,系统就会提示不可读。
这是由于URL不是一个路径
[url absoluteString]
比如:
file:///var/mobile/XXXXXXXX/MyApp.app/Documents/foo.txt
你需要使用:
[url path]
还有,两个注释:
url != nil && [url isFileURL]
非常多余
[url isFileURL]
如果URL是nil,就会返回NO
[documentsPath stringByAppendingString:@"/timecode.xml"]
不要重新发明,试试拆分路径分隔符,这行应该是这样的:
[documentsPath stringByAppendingPathComponent:@"timecode.xml"]