在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"]