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中的目录大小所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)