我正在使用statfs(),这为我提供了非超级用户可用的空闲块。
我不确定如何将其转换为KB / MB / GB。
返回的值是:
fundamental file system block size: 4096
total data blocks in file system: 3805452
free blocks in fs: 63425
free blocks avail to non-superuser: 63425
total file nodes in file system: 3805450
free file nodes in fs: 63425
我感兴趣的值是63425,但我不确定KB / MB / GB的含义是什么。
我在iPhone上运行它,一个应用程序应该可以访问2GB我相信,如果在设备上打开那么多,我就是这样做。
所以我应该在2G左右得到一个值,我想。
我针对在线模块运行63425转换为MB转换器,但这给了我30MB的结果,不应该是这种情况。
任何人都可以帮我弄清楚如何从这些信息中获取KB / MB / GB吗?
感谢。
答案 0 :(得分:3)
我使用以下方法取得了成功:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
struct statfs tStats;
statfs([[paths lastObject] cString], &tStats);
unsigned long long Available = ((unsigned long long)tStats.f_bavail) * ((unsigned long long)tStats.f_bsize);
if (Available > 1024)
{
//Kilobytes
Available = Available / 1024;
diskSpaceLbl.text = [[@"Available Disk Space: " stringByAppendingFormat:@"%llu", Available] stringByAppendingString:@" KB"];
}
if (Available > 1024)
{
//Megabytes
Available = Available / 1024;
diskSpaceLbl.text = [[@"Available Disk Space: " stringByAppendingFormat:@"%llu", Available] stringByAppendingString:@" MB"];
}
if (Available > 1024)
{
//Gigabytes
Available = Available / 1024;
diskSpaceLbl.text = [[@"Available Disk Space: " stringByAppendingFormat:@"%llu", Available] stringByAppendingString:@" GB"];
}
答案 1 :(得分:2)
块大小为4096字节,或4KB。因此63425块是63425 * 4KB = 253,700KB,大约是248MB。