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

iOS 获取磁盘,获取文件大小

2016-06-28 14:33 302 查看
1. 获取磁盘总空间大小

//磁盘总空间

+ (CGFloat)diskOfAllSizeMBytes

{

    CGFloat size =
0.0;

    NSError *error;

    NSDictionary *dic = [[NSFileManager
defaultManager] attributesOfFileSystemForPath:NSHomeDirectory()
error:&error];

    if (error) {

#ifdef DEBUG

        NSLog(@"error: %@", error.localizedDescription);

#endif

    }else{

        NSNumber *number = [dic
objectForKey:NSFileSystemSize];

        size = [number floatValue]/1024/1024;

    }

    return size;

}
2. 获取磁盘可用空间大小

//磁盘可用空间

+ (CGFloat)diskOfFreeSizeMBytes

{

    CGFloat size =
0.0;

    NSError *error;

    NSDictionary *dic = [[NSFileManager
defaultManager] attributesOfFileSystemForPath:NSHomeDirectory()
error:&error];

    if (error) {

#ifdef DEBUG

         NSLog(@"error: %@", error.localizedDescription);

#endif

        }else{

                NSNumber *number = [dic
objectForKey:NSFileSystemFreeSize];

                size = [number floatValue]/1024/1024;

            }

    return size;

}
3. 获取指定路径下某个文件的大小

//获取文件大小

+ (long
long)fileSizeAtPath:(NSString *)filePath

{

    NSFileManager *fileManager = [NSFileManager
defaultManager];

    if (![fileManager
fileExistsAtPath:filePath])

    {

        return
0;

    }

    else

    {

         return [[fileManager
attributesOfItemAtPath:filePath
error:nil]
fileSize];

    }

 }

4. 获取文件夹下所有文件的大小

//获取文件夹下所有文件的大小

+ (long
long)folderSizeAtPath:(NSString *)folderPath

{

    NSFileManager *fileManager = [NSFileManager
defaultManager];

    if (![fileManager
fileExistsAtPath:folderPath])
return 0;

    NSEnumerator *filesEnumerator = [[fileManager
subpathsAtPath:folderPath]
objectEnumerator];

    NSString *fileName;

    long
long folerSize = 0;

    while ((fileName = [filesEnumerator
nextObject]) != nil) {

            NSString *filePath = [folderPath
stringByAppendingPathComponent:fileName];

            folerSize += [self fileSizeAtPath:filePath];//见方法3

        }

    return folerSize;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息