如何获得给定path的文件大小?

我有一个包含在NSString中的文件的path。 有没有一种方法来获得其文件大小?

这一class轮船可以帮助人们:

unsigned long long fileSize = [[[NSFileManager defaultManager] attributesOfItemAtPath:someFilePath error:nil] fileSize]; 

这将以字节返回文件大小。

请记住,自Mac OS X v10.5起,fileAttributesAtPath:traverseLink:已弃用。 使用attributesOfItemAtPath:error:改为在相同的URL中描述相同的内容。

注意到我是Objective-C的新手,而且我忽略了在调用attributesOfItemAtPath:error:可能发生的attributesOfItemAtPath:error: ,您可以执行以下操作:

 NSString *yourPath = @"Whatever.txt"; NSFileManager *man = [NSFileManager defaultManager]; NSDictionary *attrs = [man attributesOfItemAtPath: yourPath error: NULL]; UInt32 result = [attrs fileSize]; 

如果有人需要一个Swift版本:

 let attr: NSDictionary = try! NSFileManager.defaultManager().attributesOfItemAtPath(path) print(attr.fileSize()) 

CPU引发属性OItemAtPath:错误:
你应该使用stat 。

 #import <sys/stat.h> struct stat stat1; if( stat([inFilePath fileSystemRepresentation], &stat1) ) { // something is wrong } long long size = stat1.st_size; printf("Size: %lld\n", stat1.st_size); 

在Oded Ben Dov的回答之后,我宁愿在这里使用一个对象:

 NSNumber * mySize = [NSNumber numberWithUnsignedLongLong:[[[NSFileManager defaultManager] attributesOfItemAtPath:someFilePath error:nil] fileSize]]; 

如果你只想使用字节的文件大小,

 unsigned long long fileSize = [[[NSFileManager defaultManager] attributesOfItemAtPath:yourAssetPath error:nil] fileSize]; 

NSByteCountFormatterstring转换的文件大小(从字节)与精确KB,MB,GB …其返回像120 MB120 KB

 NSError *error = nil; NSDictionary *attrs = [[NSFileManager defaultManager] attributesOfItemAtPath:yourAssetPath error:&error]; if (attrs) { NSString *string = [NSByteCountFormatter stringFromByteCount:fileSize countStyle:NSByteCountFormatterCountStyleBinary]; NSLog(@"%@", string); } 

Swift 2.2:

 do { let attr: NSDictionary = try NSFileManager.defaultManager().attributesOfItemAtPath(path) print(attr.fileSize()) } catch { print(error) } 

它会给文件大小的字节…

 uint64_t fileSize = [[[NSFileManager defaultManager] attributesOfItemAtPath:_filePath error:nil] fileSize];