最近要做一个下载视频的功能,要用到设备已用空间和剩余空间这个需求,在网上mark了下,自己实现了这几功能
1.获得设备剩余空间大小的方法
[objc] view plain copy print?
- -(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:@"可用空间:font-family: Arial, Helvetica, sans-serif;">%.2fG",([freeSpace doubleValue])/1024.0/1024.0/1024.0];
- NSLog(@"free === \n%@",free);
- }
2.获得单个文件以及文件夹大小的方法
[objc] view plain copy print?
- //获得单个文件的大小
- - (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文件夹的路径。