xcode – 计算cocoa中的目录大小

xcode – 计算cocoa中的目录大小,第1张

概述我想计算目录(文件夹)大小,我必须列出其相应大小的卷(驱动器)中的所有文件和文件夹(子文件夹).我使用下面的代码来计算大小.此代码的问题是性能问题.我正在使用NSBrowser进行显示. NSArray *filesArray = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:folderPath error:nil];NSE 我想计算目录(文件夹)大小,我必须列出其相应大小的卷(驱动器)中的所有文件和文件夹(子文件夹).我使用下面的代码来计算大小.此代码的问题是性能问题.我正在使用NSbrowser进行显示.

NSArray *filesArray = [[NSfileManager defaultManager] subpathsOfDirectoryAtPath:folderPath error:nil];NSEnumerator *filesEnumerator = [filesArray objectEnumerator];Nsstring *filename;unsigned long long int fileSize = 0;while (filename = [filesEnumerator nextObject]) {    NSDictionary *fileDictionary = [[NSfileManager defaultManager] attributesOfItemAtPath:folderPath error:nil];    fileSize += [fileDictionary fileSize];}return fileSize;

问题:

>有没有内置功能?
>如果不是,计算尺寸的最佳方法是什么?
>使用缓存存储已计算的文件大小是否合适?

谢谢…

解决方法 你可以使用stat.

-(unsigned long long)getFolderSize : (Nsstring *)folderPath;{    char *dir = (char *)[folderPath fileSystemRepresentation];DIR *cd;struct dirent *dirinfo;int lastchar;struct stat linfo;static unsigned long long totalSize = 0;cd = opendir(dir);if (!cd) {    return 0;}while ((dirinfo = readdir(cd)) != NulL) {    if (strcmp(dirinfo->d_name,".") && strcmp(dirinfo->d_name,"..")) {        char *d_name;        d_name = (char*)malloc(strlen(dir)+strlen(dirinfo->d_name)+2);        if (!d_name) {            //out of memory            closedir(cd);            exit(1);        }        strcpy(d_name,dir);        lastchar = strlen(dir) - 1;        if (lastchar >= 0 && dir[lastchar] != '/')            strcat(d_name,"/");        strcat(d_name,dirinfo->d_name);        if (lstat(d_name,&linfo) == -1) {            free(d_name);            continue;        }        if (S_ISDIR(linfo.st_mode)) {            if (!S_ISLNK(linfo.st_mode))                [self getFolderSize:[Nsstring stringWithCString:d_name enCoding:NSUTF8StringEnCoding]];            free(d_name);        } else {            if (S_ISREG(linfo.st_mode)) {                totalSize+=linfo.st_size;            } else {                free(d_name);            }        }    }}closedir(cd);return totalSize;}

看看Mac OS X not reporting directory sizes correctly?

总结

以上是内存溢出为你收集整理的xcode – 计算cocoa中的目录大小全部内容,希望文章能够帮你解决xcode – 计算cocoa中的目录大小所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1071739.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存