美文网首页
磁盘相关的api及操作

磁盘相关的api及操作

作者: 大飞_2048 | 来源:发表于2020-09-28 17:00 被阅读0次

    1、检测磁盘使用大小及比例
    iphone 剩余磁盘大小:

    iPhone中获取磁盘剩余空间大小

    iPhone中获取磁盘剩余空间大小

    + (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命令来看就可以看得很清楚了:

    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的。

    https://www.cnblogs.com/artstyle/archive/2012/06/18/2553325.html

    经检查无效,原因未知
    上层代码检测
    ios检测方式:
    //获取磁盘大小、剩余空间
    NSDictionary *systemAttributes = [[NSFileManager defaultManager] fileSystemAttributesAtPath:NSHomeDirectory()];
    NSString *diskTotalSize = [systemAttributes objectForKey:@"NSFileSystemSize"];
    NSLog(@"磁盘大小:%@ B", diskTotalSize);
    NSLog(@"磁盘大小:%.2f GB", [diskTotalSize floatValue]/1024/1024/1024);
    NSString *diskFreeSize = [systemAttributes objectForKey:@"NSFileSystemFreeSize"];
    NSLog(@"可用空间:%@ B", diskFreeSize);
    NSLog(@"可用空间:%.2f GB", [diskFreeSize floatValue]/1024/1024/1024)

    android检测磁盘:
    https://weibo.com/p/230418132f4d37b0102wd7x
    https://www.cnblogs.com/renjiemei1225/p/6148433.html

    相关文章

      网友评论

          本文标题:磁盘相关的api及操作

          本文链接:https://www.haomeiwen.com/subject/ogklektx.html