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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获得给定路径的文件大小?相关的知识,希望对你有一定的参考价值。

我有一个包含在NSString中的文件路径。有没有办法获得其文件大小?

答案

这个班轮可以帮助人们:

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

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

另一答案

请记住,自Mac OS X v10.5起,不推荐使用fileAttributesAtPath:traverseLink:。使用attributesOfItemAtPath:error:代替,在same URL thesamet提到。

有一点需要注意,我是Objective-C的新手,而且我忽略了调用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 raises with attributesOfItemAtPath:error: 你应该使用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
", 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];

NSByteCountFormatter文件大小的字符串转换(来自字节)与精确的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];
另一答案

Swift4:

        let attributes = try! FileManager.default.attributesOfItem(atPath: path)
        let fileSize = attributes[.size] as! NSNumber

以上是关于如何获得给定路径的文件大小?的主要内容,如果未能解决你的问题,请参考以下文章

js 如何获取上传文件的大小

如何在.Net中获得最大允许的文件大小?

在网站后台用户上传的图片如何获得图片路径存入数据库(mysql) (php解决) 急!!!

C语言 stat()函数获得文件大小需不需要打开文件?就是stat()函数是怎么获得文件的大小的?

c语言如何获得文件的创建时间以及文件的大小?(头文件及所用的函数,最好有用法举例)

完美解决js校验文件大小