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

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;

}

//C

#include <stdio.h>



int main(int argc, const char * argv[]) {





    printf("Hello, World!\n");

    

    FILE *fp;

    long siz;

    char path[100]="/Users/wangyanping/Desktop/image.jpg";   //图片地址,我的图片放在E盘根目录



    if((fp=fopen(path,"rb"))==NULL)

    {

    printf("不能打开该地址文件,请检查\n");

    getchar();

    return 0;

    }

    

    if (fp) {

          fseek(fp, 0, SEEK_END);

          siz = ftell(fp);

          fclose(fp);

       }

    siz/=1024.0;

    printf("该图片大小为 %ld kb\n",siz);

    getchar();



    return 0;

}

//C

#include <stdio.h>

int main(int argc, const char * argv[]) {


    printf("Hello, World!\n");
    
    FILE *fp;
    long siz;
    char path[100]="/Users/wangyanping/Desktop/image.jpg";   //图片地址,我的图片放在E盘根目录

    if((fp=fopen(path,"rb"))==NULL)
    {
    printf("不能打开该地址文件,请检查\n");
    getchar();
    return 0;
    }
    
    if (fp) {
          fseek(fp, 0, SEEK_END);
          siz = ftell(fp);
          fclose(fp);
       }
    siz/=1024.0;
    printf("该图片大小为 %ld kb\n",siz);
    getchar();

    return 0;
}
- (void)calulateImageFileSize:(UIImage *)image {
    NSData *data = UIImagePNGRepresentation(image);
    if (!data) {
        data = UIImageJPEGRepresentation(image, 0.5);//需要改成0.5才接近原图片大小,原因请看下文
    }
    double dataLength = [data length] * 1.0;
    NSArray *typeArray = @[@"bytes",@"KB",@"MB",@"GB",@"TB",@"PB", @"EB",@"ZB",@"YB"];
    NSInteger index = 0;
    while (dataLength > 1024) {
        dataLength /= 1024.0;
        index ++;
    }
    NSLog(@"image = %.3f %@",dataLength,typeArray[index]);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值