在NSURL中使用getResourceValue:forKey方法时出错

时间:2010-08-12 05:47:37

标签: iphone

我试图通过传递getResourceValue:forKey方法从NSURL对象获取文件大小属性。这是我写的代码:

NSURL *samplePath = [[NSURL alloc] initWithString:@"file://localhost/Users/Abhinav/Test/abhi.pdf"];
[samplePath getResourceValue:&name forKey:NSURLFileSizeKey error:&error];
NSLog(@"Error===%@",error);
NSLog(@"name===%@",name);

但是我收到了以下错误:

Error Domain=NSPOSIXErrorDomain Code=17 "The operation couldn’t be completed. File exists"

请协助。

2 个答案:

答案 0 :(得分:5)

您的示例中的name是什么类型的?您应该传递要存储大小的变量的地址:

NSURL *samplePath = [[NSURL alloc initWithString:@"file://localhost/Users/Abhinav/Test/abhi.pdf"];
NSNumber *fileSizeBytes;
[samplePath getResourceValue:&fileSizeBytes forKey:NSURLFileSizeKey error:&error];
NSLog(@"Error===%@",error); NSLog(@"size of file in bytes ===%@",fileSizeBytes);

答案 1 :(得分:1)

如果您尝试获取本地文件的文件大小,请参阅NSFileManager

例如,要获取文件的大小:int size = [[[NSFileManager defaultManager] attributesOfItemAtPath:@"/Users/Abhinav/Test/abhi.pdf" error:NULL] fileSize];应该有效(并且如果文件不存在或者不可读,则会将size设置为0。< / p>