- 计算文件夹下所有文件的大小
// 查看错误信息
__autoreleasing NSError *error;
// 文件管理对象
NSFileManager *manager = [NSFileManager defaultManager];
// 读取路径
NSString *path = @"/Users/Mu/Desktop/copy/17-Copy基本使用(深浅拷贝).mp4";
// 记录内存
double size = 0;
// 获取文件夹属性:内存大小不准确
NSDictionary *dic1 = [manager attributesOfItemAtPath:path error:&error];
// 查看是否出错
// localizedFailureReason:失败原因
// localizedDescription:本地描述信息
// NSLog(@"%@", error.localizedDescription);
// 关键字NSFileSize对应的是占用内存
// NSLog(@"%@", dic1[@"NSFileSize"]);
NSLog(@"----------");
// isDirectory(计算机文件或程序的目录)
BOOL dir = NO;
// 判断文件是否存在,并且是否为文件夹
if ([manager fileExistsAtPath:path isDirectory:&dir]&&dir==YES)
{
// 获取文件夹所有的子文件:存入集合(包括子文件夹)
// - 方法返回值是一个NSArray:NSArray内存储的是NSString
NSArray *singe = [manager subpathsAtPath:path];
// 遍历集合即得到所有的文件名名:不是全部路径
for (NSString *str in singe)
{
// 因为是计算搜文件的大小,所以需要去掉子文件夹:通过判断文件格式即可 [str.pathExtension isEqualToString:@"png"]
// 或者判断其或者是否符合格式 [str hasSuffix:@".png"]
if ([str.pathExtension isEqualToString:@"png"])
{
// 因为得到的是去除掉总文件夹的文件名。因此需要加上文件的路径:占位符格式化
NSDictionary *dic = [manager attributesOfItemAtPath:[NSString stringWithFormat:@"%@/%@", path, str]error:&error];
// 叠加文件的大小
size += [dic[@"NSFileSize"] intValue];
// 打印每一个符合要求的路径
//NSLog(@"%@", str);
}
}
// 打印文件的大小:文件的存储size是B,现在获取的是G
NSLog(@"%f", size/1000/1000/1000);
// 路径为文件
}else
{
// 文件不存在或者文件路径不是文件夹
NSLog(@"文件不存在||不是文件夹");
if(!dir)
{
// 路径是文件,其大小
NSLog(@"%f", [dic1[@"NSFileSize"] floatValue]/1000000000);
}
}
每句代码都有注释,多看看