最近要做一个下载视频的功能,要用到设备已用空间和剩余空间这个需求,在网上mark了下,自己实现了这几功能
1.获得设备剩余空间大小的方法
-(void)checkUsedDisk
{
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask , YES) objectAtIndex:0];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSDictionary *fileSysAttributes = [fileManager attributesOfFileSystemForPath:path error:nil];
NSNumber *freeSpace = [fileSysAttributes objectForKey:NSFileSystemFreeSize];
NSString *free = [NSString stringWithFormat:@"可用空间:%.2fG",([freeSpace doubleValue])/1024.0/1024.0/1024.0];
NSLog(@"free === \n%@",free);
}
2.获得单个文件以及文件夹大小的方法
//获得单个文件的大小
- (long long) fileSizeAtPath:(NSString*) filePath{
NSFileManager* manager = [NSFileManager defaultManager];
if ([manager fileExistsAtPath:filePath]){
return [[manager attributesOfItemAtPath:filePath error:nil] fileSize];
}
return 0;
}
//获得文件夹(遍历)的大小
- (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*1024.0);
}
如何得到文件或文件夹的路径呢。一般都在程序的Documents文件夹下,比如
NSString *usedPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/DownLoad"];
这就是Download文件夹的路径。下一篇我会介绍我如何在iOS中使用下载大文件的方法,并把demo放在gitHub上。