美文网首页固予基础应用
iOS计算文件夹或文件大小

iOS计算文件夹或文件大小

作者: OC笔记 | 来源:发表于2016-11-14 14:48 被阅读98次

    先贴代码:

    // 获取文件或者文件夹大小(单位:B)
    + (unsigned long long)sizeAtPath:(NSString *)path {
        NSFileManager *fm = [NSFileManager defaultManager];
        BOOL isDir = YES;
        if (![fm fileExistsAtPath:path isDirectory:&isDir]) {
            return 0;
        };
        unsigned long long fileSize = 0;
        // directory
        if (isDir) {
            NSDirectoryEnumerator *enumerator = [fm enumeratorAtPath:path];
            while (enumerator.nextObject) {
               // 下面注释掉的代码作用:不递归遍历子文件夹
               // if ([enumerator.fileAttributes.fileType isEqualToString:NSFileTypeDirectory]) {
               //      [enumerator skipDescendants];
               // }
                fileSize += enumerator.fileAttributes.fileSize;
            }
        } else {
            // file
            fileSize = [fm attributesOfItemAtPath:path error:nil].fileSize;
        }
        return fileSize;
    }
    

    解释说明

    上面的方法遍历文件夹利用了系统的目录枚举类NSDirectoryEnumerator来递归遍历文件夹。
    NSDirectoryEnumerator默认递归遍历文件夹。如果不想遍历子文件夹下的文件,可以调用NSDirectoryEnumerator的实例方法skipDescendants来禁用遍历子文件夹(代码可以参照注释掉的代码)。主要注意的一点是,在上面的递归遍历方法中,我并没有判断文件类型(文件夹还是文件)来计算整个文件大小。原因是:我发现文件夹也有大小(大家可以自己复制代码测一测)。我自己封装了一个目录类YSDirectoryManager,欢迎大家参考使用。GitHub地址如下:
    GitHub

    相关文章

      网友评论

        本文标题:iOS计算文件夹或文件大小

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