获取到沙盒中的文件或文件夹的路径时,可以使用路径字符串直接调用fileSize方法,从而得到文件或文件夹的大小。
- (void)viewDidLoad { [super viewDidLoad]; // 从目录获取图片并转NSData NSString *imgPath = [[NSBundle mainBundle] pathForResource:@"180" ofType:@"jpg"]; UIImage *curImage = [UIImage imageWithContentsOfFile:imgPath]; NSData *imageData = UIImagePNGRepresentation(curImage); // 图片保存的沙盒路径 NSString *pathDocuments = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) objectAtIndex:0]; NSString *saveImgPath = [NSString stringWithFormat:@"%@/SavePic", pathDocuments]; // 文件名 NSString *imgFileName = @"/180.jpg"; // 文件管理器 NSFileManager *fileManager = [NSFileManager defaultManager]; // 判断文件夹是否存在,如果不存在则创建 BOOL createResult = NO; if (![fileManager fileExistsAtPath:saveImgPath]) { [fileManager createDirectoryAtPath:saveImgPath withIntermediateDirectories:YES attributes:nil error:nil]; createResult = [fileManager createFileAtPath:[saveImgPath stringByAppendingString:imgFileName] contents:imageData attributes:nil]; } else { createResult = [fileManager createFileAtPath:[saveImgPath stringByAppendingString:imgFileName] contents:imageData attributes:nil]; } if (createResult) { // 沙河路径调用FileSize方法技术文件大小 NSString *documentsSize = [pathDocuments fileSize]; NSLog(@"__%@",documentsSize); // 输出:2.31MB NSString *savePicSize = [saveImgPath fileSize]; NSLog(@"__%@",savePicSize); // 输出:96.98KB NSString *onePicSize = [[saveImgPath stringByAppendingString:imgFileName] fileSize]; NSLog(@"__%@",onePicSize); // 输出:96.98KB } }NSString+FileSize资源,个人使用,会copy的同学不要下.
#import <Foundation/Foundation.h> @interface NSString (FileSize) - (NSString *)fileSize; @end #import "NSString+FileSize.h" @implementation NSString (FileSize) - (NSString *)fileSize { // 总大小 unsigned long long size = 0; NSString *sizeText = @""; // 文件管理者 NSFileManager *mgr = [NSFileManager defaultManager]; // 文件属性 NSDictionary *attrs = [mgr attributesOfItemAtPath:self error:nil]; // 如果这个文件或者文件夹不存在,或者路径不正确直接返回0; if (attrs == nil) return @""; if ([attrs.fileType isEqualToString:NSFileTypeDirectory]) { /* 如果是文件夹 */ // 获得文件夹的大小 == 获得文件夹中所有文件的总大小 NSDirectoryEnumerator *enumerator = [mgr enumeratorAtPath:self]; for (NSString *subpath in enumerator) { // 全路径 NSString *fullSubpath = [self stringByAppendingPathComponent:subpath]; // 累加文件大小 size += [mgr attributesOfItemAtPath:fullSubpath error:nil].fileSize; if (size >= pow(10, 9)) { // size >= 1GB sizeText = [NSString stringWithFormat:@"%.2fGB", size / pow(10, 9)]; } else if (size >= pow(10, 6)) { // 1GB > size >= 1MB sizeText = [NSString stringWithFormat:@"%.2fMB", size / pow(10, 6)]; } else if (size >= pow(10, 3)) { // 1MB > size >= 1KB sizeText = [NSString stringWithFormat:@"%.2fKB", size / pow(10, 3)]; } else { // 1KB > size sizeText = [NSString stringWithFormat:@"%zdB", (long)size]; } } return sizeText; } else { /* 如果是文件 */ size = attrs.fileSize; if (size >= pow(10, 9)) { // size >= 1GB sizeText = [NSString stringWithFormat:@"%.2fGB", size / pow(10, 9)]; } else if (size >= pow(10, 6)) { // 1GB > size >= 1MB sizeText = [NSString stringWithFormat:@"%.2fMB", size / pow(10, 6)]; } else if (size >= pow(10, 3)) { // 1MB > size >= 1KB sizeText = [NSString stringWithFormat:@"%.2fKB", size / pow(10, 3)]; } else { // 1KB > size sizeText = [NSString stringWithFormat:@"%zdB", (long)size]; } } return sizeText; } @end
