1

我是objective c的新手,我尝试了很多小时来找出如何获取文件大小但我失败了,请帮助我,谢谢。

首先我使用这样的代码:

NSString *yourPath = @"http://www.xxx.com.au/magazine/nm.pdf";
NSFileManager *man = [[NSFileManager alloc] init];
NSDictionary *attrs = [man attributesOfItemAtPath: yourPath error: nil];
unsigned long long result = [[attrs objectForKey: NSFileSize] unsignedLongLongValue];
NSLog(@"%llu", result);

输出为 0

然后我试试这个:

NSString *yourPath = @"http://www.xxx.com.au/magazine/nm.pdf";
unsigned long long result = [[[NSFileManager defaultManager] attributesOfItemAtPath: yourPath error:nil] fileSize];
NSLog(@"%llu", result);

也得到 0。在我更改本地文件的路径后,结果相同。

4

1 回答 1

3

您的路径不是路径,它是带有 http 协议的 URL。

NSFileManager仅适用于文件系统文件(期望路径,而不是 url)。也NSFileManager不再推荐使用 Cocoa 中获取文件大小的方法。

现在推荐的方法是使用NSURL. 但它必须是一个“文件 url”(使用创建它[NSURL fileURLWithPath:myPath])。如果它是“文件 url”,您可以使用getResourceValue:forKey:error:resourceValuesForKeys:error:获取文件大小等信息。

但是,在您的情况下,您没有路径,而是 http URL。http URL 指的是资源,而不是文件(资源可能是文件,也可能不是文件)。如果它是一个文件,那么至少不开始下载它就无法知道它的大小。根据服务器的响应方式,它可能会或可能不会在下载开始时知道大小。在最坏的情况下,您只有在完全下载文件后才知道大小。

于 2012-09-19T21:32:35.320 回答