Как получить размер файла с учетом пути?

У меня есть путь к файлу, содержащемуся в NSString. Есть ли способ получить размер файла?

Ответ 1

Этот один вкладыш может помочь людям:

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

Это возвращает размер файла в байтах.

Ответ 2

Имейте в виду, что fileAttributesAtPath: traverseLink: устарел от Mac OS X v10.5. Вместо этого используйте attributesOfItemAtPath:error:, описанный в тот же URL, который упоминается в этом документе.

С оговоркой, что я новичок Objective-C, и я игнорирую ошибки, которые могут возникнуть при вызове attributesOfItemAtPath:error:, вы можете сделать следующее:

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

Ответ 3

В случае, если кому-то нужна версия Swift:

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

Ответ 5

Если вам нужен только размер файла с байтами, просто используйте,

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

NSByteCountFormatter Строковое преобразование размера файла (из байтов) с точными КБ, МБ, ГБ... Возвращает как 120 MB или 120 KB

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

Ответ 6

Следуя ответу от Oded Ben Dov, я предпочел бы использовать здесь объект:

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

Ответ 7

Swift 2.2:

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

Ответ 8

Он предоставит размер файла в байте...

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

Ответ 9

Swift4:

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

Ответ 10

В Swift 3.x и выше вы можете использовать:

do {
    //return [FileAttributeKey : Any]
    let attr = try FileManager.default.attributesOfItem(atPath: filePath)
    fileSize = attr[FileAttributeKey.size] as! UInt64

    //or you can convert to NSDictionary, then get file size old way as well.
    let attrDict: NSDictionary = try FileManager.default.attributesOfItem(atPath: filePath) as NSDictionary
    fileSize = dict.fileSize()
} catch {
    print("Error: \(error)")
}