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

                    }

                }

                


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

  • 相关阅读:
    mac 使用指南
    客服系统引用方案
    CSS中margin和padding的区别
    NuGet学习笔记(1)——初识NuGet及快速安装使用
    百度搜索这些词:(百度搜索特效,好玩)
    sql语言:如何查询字符串某个字符的个数?
    Sql日期时间格式转换
    SQL获取当前时间(日期)
    Redis快速入门:初识Redis
    选择Key-Value Store
  • 原文地址:https://www.cnblogs.com/pruple/p/5277469.html
Copyright © 2011-2022 走看看