计算文件夹大小

来源:互联网 发布:offsetwidth js 编辑:程序博客网 时间:2024/06/10 15:21

下面分享给大家2个封装好的计算缓存大小的方法


首先你要先确定你要计算的是哪个文件夹,先写好该文件夹的路径。


如:NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMaskYESlastObject]; //是沙盒文件夹中 Lidrary中的Caches文件夹的路径



在.m中写入总这2个方法,然后调用。下面具体说说这2个方法的用途。


方法1是在你文件夹下计算每个单个文件夹的大小。
方法2是该文件夹下所有文件,当然包括文件夹中有文件夹这种嵌套关系,然后调用方法1去计算每个文件夹的大小,最后叠加起来。

//方法1:单个文件的大小

- (long long) fileSizeAtPath:(NSString*)Path{

    NSFileManager* manager = [NSFileManager defaultManager];

    if ([manager fileExistsAtPath:Path]){

        return [[manager attributesOfItemAtPath:filePath error:nil] fileSize];

    }

    return 0;

}

//方法2:遍历文件夹获得文件夹大小,返回多少MB

- (float ) folderSizeAtPath:(NSString*)folderPath{

    NSFileManager* manager = [NSFileManager defaultManager];

    if (![manager fileExistsAtPath:folderPath]) return 0;

    NSEnumerator *childFilesEnumerator = [[manager subpathsAtPath:folderPath] objectEnumerator];

    NSString* fileName;

    long long folderSize = 0;

    while ((fileName = [childFilesEnumerator nextObject]) != nil){

        NSString* fileAbsolutePath = [folderPath stringByAppendingPathComponent:fileName];

        folderSize += [self fileSizeAtPath:fileAbsolutePath]; //最后叠加

    }

    return folderSize/(1024.0*1024.0);

}


// 删除缓存


在适合我地方使用者方法可以将(self.path)该路径下的文件夹全部删除

 NSArray *files = [[NSFileManagerdefaultManager]subpathsAtPath:self.path];

        

        for (NSString *pin files) {

            NSError *error;

            NSString *path = [self.pathstringByAppendingPathComponent:p];

            if ([[NSFileManagerdefaultManager]fileExistsAtPath:path]) {

                [[NSFileManagerdefaultManager]removeItemAtPath:patherror:&error];

            }

        }




0 0