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]);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用iOS SDK中的HTTP网络请求API,相当的复杂,调用很繁琐,ASIHTTPRequest就是一个对CFNetwork API进行了封装,并且使用起来非常简单的一套API,用Objective-C编写,可以很好的应用在Mac OS X系统和iOS平台的应用程序中。ASIHTTPRequest适用于基本的HTTP请求,和基于REST的服务之间的交互。 ASIHTTPRequest功能很强大,主要特色如下: l 通过简单的接口,即可完成向服务端提交数据和从服务端获取数据的工作 l 下载的数据,可存储到内存中或直接存储到磁盘中 l 能上传本地文件到服务端 l 可以方便的访问和操作请求和返回的Http头信息 l 可以获取到上传或下载的进度信息,为应用程序提供更好的体验 l 支持上传或下载队列,并且可获取队列的进度信息 l 支持基本、摘要和NTLM身份认证,在同一会话中授权凭证会自动维持,并且可以存储在Keychain(Mac和iOS操作系统的密码管理系统)中 l 支持Cookie l 当应用(iOS 4+)在后台运行时,请求可以继续运行 l 支持GZIP压缩数据 l 内置的ASIDownloadCache类,可以缓存请求返回的数据,这样即使没有网络也可以返回已经缓存的数据结果 l ASIWebPageRequest –可以下载完整的网页,包括包含的网页、样式表、脚本等资源文件,并显示在UIWebView /WebView中。任意大小的页面都可以无限期缓存,这样即使没有网络也可以离线浏览 l 支持客户端证书 l 支持通过代理发起Http请求 l 支持带宽限制。在iOS平台,可以根据当前网络情况来自动决定是否限制带宽,例如当使用WWAN(GPRS/Edge/3G)网络时限制,而当使用WIFI时不做任何限制 l 支持断点续传 l 支持同步和异步请求
ASIHTTPRequest对CFNetwork API进行了封装,并且使用起来非常简单,用Objective-C编写,可以很好的应用在Mac OS X系统和iOS平台的应用程序中。ASIHTTPRequest适用于基本的HTTP请求,和基于REST的服务之间的交互。 ASIHTTPRequest功能很强大,主要特色如下: l 通过简单的接口,即可完成向服务端提交数据和从服务端获取数据的工作 l 下载的数据,可存储到内存中或直接存储到磁盘中 l 能上传本地文件到服务端 l 可以方便的访问和操作请求和返回的Http头信息 l 可以获取到上传或下载的进度信息,为应用程序提供更好的体验 l 支持上传或下载队列,并且可获取队列的进度信息 l 支持基本、摘要和NTLM身份认证,在同一会话中授权凭证会自动维持,并且可以存储在Keychain(Mac和iOS操作系统的密码管理系统)中 l 支持Cookie l 当应用(iOS 4+)在后台运行时,请求可以继续运行 l 支持GZIP压缩数据 l 内置的ASIDownloadCache类,可以缓存请求返回的数据,这样即使没有网络也可以返回已经缓存的数据结果 l ASIWebPageRequest –可以下载完整的网页,包括包含的网页、样式表、脚本等资源文件,并显示在UIWebView /WebView中。任意大小的页面都可以无限期缓存,这样即使没有网络也可以离线浏览 l 支持客户端证书 l 支持通过代理发起Http请求 l 支持带宽限制。在iOS平台,可以根据当前网络情况来自动决定是否限制带宽,例如当使用WWAN(GPRS/Edge/3G)网络时限制,而当使用WIFI时不做任何限制 l 支持断点续传 l 支持同步和异步请求

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值