gpt4 book ai didi

objective-c - 如何正确获取文件大小并将其转换为 Cocoa 中的 MB、GB?

转载 作者:IT老高 更新时间:2023-10-28 11:39:35 25 4
gpt4 key购买 nike

Possible Duplicate:
ObjC/Cocoa class for converting size to human-readable string?

我是 Cocoa 的新手。我正在尝试正确获取文件夹文件的大小。如果小于 1 GB,则以 MB 或 GB 显示。

我希望它显示的方式是在点后用一个数字四舍五入。

示例5.5 MB 如果大于 1000 > 1.1 GB

我正在尝试使用这个

 unsigned  long long size= ([[[NSFileManager defaultManager] attributesOfItemAtPath:fullPath error:nil] fileSize]);

但我无法正确转换数字并按我的意愿显示它。

谢谢。

最佳答案

为了将文件大小转换为 MB、Gb 使用下面的函数

- (id)transformedValue:(id)value
{

double convertedValue = [value doubleValue];
int multiplyFactor = 0;

NSArray *tokens = @[@"bytes",@"KB",@"MB",@"GB",@"TB",@“PB”, @“EB”, @“ZB”, @“YB”];

while (convertedValue > 1024) {
convertedValue /= 1024;
multiplyFactor++;
}

return [NSString stringWithFormat:@"%4.2f %@",convertedValue, tokens[multiplyFactor]];
}

编辑:

您也可以使用NSByteCountFormatter类(class)。适用于 iOS 6.0/OS X v10.8 及更高版本。

[NSByteCountFormatter stringFromByteCount:1999 countStyle:NSByteCountFormatterCountStyleFile];

您可以在 countStyle 中使用 NSByteCountFormatterCountStyleFileNSByteCountFormatterCountStyleMemoryNSByteCountFormatterCountStyleDecimalNSByteCountFormatterCountStyleBinary

NSByteCountFormatterCountStyleFile: Specifies display of file or storage byte counts. The actual behavior for this isplatform-specific; on OS X 10.8, this uses the decimal style, but thatmay change over time.

NSByteCountFormatterCountStyleMemory: Specifies display of memory byte counts. The actual behavior for this is platform-specific; on OSX 10.8, this uses the binary style, but that may change over time.

NSByteCountFormatterCountStyleDecimal: Specifies the number of bytes for KB explicitly, 1000 bytes are shown as 1 KB

NSByteCountFormatterCountStyleBinary: Specifies the number of bytes for KB explicitly, 1024 bytes are shown as 1 KB

关于objective-c - 如何正确获取文件大小并将其转换为 Cocoa 中的 MB、GB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7846495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com