您的位置:首页 > 移动开发 > IOS开发

iOS随笔之获取可用空间及某个文件或文件夹的大小及判断文件是否存在

2017-03-17 09:32 627 查看


iOS随笔之获取可用空间及某个文件或文件夹的大小

标签: path可用空间得到文件大小
2014-03-05 14:43 895人阅读 评论(0) 收藏 举报


 分类:

ios(20) 


版权声明:本文为博主原创文章,未经博主允许不得转载。

最近要做一个下载视频的功能,要用到设备已用空间和剩余空间这个需求,在网上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:@"可用空间:<span style="font-family: Arial, Helvetica, sans-serif;">%.2fG",([freeSpace doubleValue])/1024.0/1024.0/1024.0];</span>  

    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文件夹的路径。

 


iOS-判断沙盒中是否已经存在文件

判断方法,类内方法:

//判断文件是否已经在沙盒中已经存在?
-(BOOL) isFileExist:(NSString *)fileName
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:0];
NSString *filePath = [path stringByAppendingPathComponent:fileName];
NSFileManager *fileManager = [NSFileManager defaultManager];
BOOL result = [fileManager fileExistsAtPath:filePath];
NSLog(@"这个文件已经存在:%@",result?@"是的":@"不存在");
return result;
}
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
9
10
11

以上是判断cache文件夹,如果判断document文件将:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
1
2
1
2

替换为:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
1
1

即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐