zoukankan      html  css  js  c++  java
  • 一道题看懂OC的文件管理:NSFileManager,计算文件包含内存大小

    • 计算文件夹下所有文件的大小

                 // 查看错误信息

                __autoreleasing NSError *error;

                // 文件管理对象

                NSFileManager *manager = [NSFileManager defaultManager];

                // 读取路径

                NSString *path = @"/Users/Mu/Desktop/copy/17-Copy基本使用(深浅拷贝).mp4";

                // 记录内存

                double size = 0;

                // 获取文件夹属性:内存大小不准确

                NSDictionary *dic1 = [manager attributesOfItemAtPath:path error:&error];

                // 查看是否出错

                // localizedFailureReason:失败原因

                // localizedDescription:本地描述信息

                

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

                // 关键字NSFileSize对应的是占用内存

               // NSLog(@"%@", dic1[@"NSFileSize"]);

                NSLog(@"----------");

                // isDirectory(计算机文件或程序的目录)

                BOOL dir = NO;

                // 判断文件是否存在,并且是否为文件夹

                if ([manager fileExistsAtPath:path isDirectory:&dir]&&dir==YES)

                {

                    // 获取文件夹所有的子文件:存入集合(包括子文件夹)

                    // - 方法返回值是一个NSArray:NSArray内存储的是NSString

                    NSArray *singe = [manager subpathsAtPath:path];

                    // 遍历集合即得到所有的文件名名:不是全部路径

                    for (NSString *str in singe)

                    {

                        // 因为是计算搜文件的大小,所以需要去掉子文件夹:通过判断文件格式即可 [str.pathExtension isEqualToString:@"png"]

                        // 或者判断其或者是否符合格式 [str hasSuffix:@".png"]

                        if ([str.pathExtension isEqualToString:@"png"])

                        {

                            // 因为得到的是去除掉总文件夹的文件名。因此需要加上文件的路径:占位符格式化

                            NSDictionary *dic = [manager attributesOfItemAtPath:[NSString stringWithFormat:@"%@/%@", path, str]error:&error];

                            // 叠加文件的大小

                            size += [dic[@"NSFileSize"] intValue];

                            // 打印每一个符合要求的路径

                            //NSLog(@"%@", str);

                        }

                      

                    }

                    // 打印文件的大小:文件的存储size是B,现在获取的是G

                      NSLog(@"%f", size/1000/1000/1000);

                    // 路径为文件

                }else

                {

                    // 文件不存在或者文件路径不是文件夹

                    NSLog(@"文件不存在||不是文件夹");

                   if(!dir)

                    {

                        // 路径是文件,其大小

                        NSLog(@"%f", [dic1[@"NSFileSize"] floatValue]/1000000000);

                    }

                }

                


    每句代码都有注释,多看看

  • 相关阅读:
    黄聪:解决Web部署 svg/woff/woff2字体 404错误
    黄聪:C#中HtmlAgilityPack判断是否包含或不包含指定的属性或值
    黄聪:GeckoFX如何引用jquery文件并执行自定义JS
    黄聪:css3实现图片划过一束光闪过效果(图片光影掠过效果)
    黄聪:C#带cookie模拟登录百度
    黄聪:如何为IIS增加svg和woff等字体格式的MIME
    黄聪:微信支付错误两个问题的解决:curl出错,错误码:60
    黄聪:《跟黄聪学WordPress插件开发》
    黄聪:GeckoWebBrowser多窗口独立cookie
    黄聪:远程连接mysql数据库注意事项记录(远程连接慢skip-name-resolve)
  • 原文地址:https://www.cnblogs.com/pruple/p/5277469.html
Copyright © 2011-2022 走看看