获取 iPhone 剩余磁盘空间和全部空间的代码

 1 #include <sys/param.h>   
 2 #include <sys/mount.h>
 3 long long freeSpace() {
 4     struct statfs buf;
 5     long long freespace = -1;
 6     if(statfs("/", &buf) >= 0){
 7         freespace = (long long)buf.f_bsize * buf.f_bfree;
 8     }
 9 
10     return freespace;
11 }
12 
13 +(float)getTotalDiskSpaceInBytes {   
14     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);   
15     struct statfs tStats;   
16     statfs([[paths lastObject] cString], &tStats);   
17     float totalSpace = (float)(tStats.f_blocks * tStats.f_bsize);   
18   
19     return totalSpace;   
20 }  

转自:http://blog.csdn.net/cloudhsu/article/details/5825965


1
2
3
4
5
6
7
8
+ ( long long ) freeDiskSpaceInBytes{
     struct statfs buf;
     long long freespace = -1;
     if (statfs( "/var" , &buf) >= 0){
         freespace = ( long long )(buf.f_bsize * buf.f_bfree);
     }
     return freespace;
}

 

在网上看到的例子中,第四行调用函数 statfs 时给定的参数是”/”,其实是不正确的,因为这样拿到的其实是系统分区的剩余空间,这些空间对我们应用程序来说是没有权限使用的,从df命令来看就可以看得很清楚了:

1
2
3
4
5
Filesystem            Size  Used Avail Use% Mounted on
/dev/disk0s1          1.0G  596M  418M  59% /
devfs                  36K   36K     0 100% /dev
/dev/disk0s2s1         14G   14G  842M  95% / private /var
/dev/disk1            178M   40M  138M  23% /Developer

根目录下挂载的分区是 /dev/disk0s1,而对我们来说有用的是 /dev/disk0s2s1。而在iphone或者itunes上面所看到的剩余空间大小也是这个分区的剩余空间大小。从这里,我们也可以很明显的看出标识为16G的iPhone是怎么只有14G的。

转自:http://blog.yorkgu.me/2011/07/20/get-free-disk-space-in-bytes-on-iphone-and-ipad/

转载于:https://www.cnblogs.com/ThankForYou/archive/2012/10/29/2744276.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值