我的应用会定期将某些内容转储到文档文件夹中。我已经使用下面的代码来计算我的应用程序消耗的总内存大小。但我发现它与我从设置\用法中看到的不同。我的代码显示的内存非常少。我无法跟踪计算中出错的位置/或者我错过了文件夹路径。
我计算了我的应用尺寸如下:
NSString *folderPath = [[NSBundle mainBundle] bundlePath];
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 stringByAppendingPathComponent:fileName] error:nil];
fileSize += [fileDictionary fileSize];
};
答案 0 :(得分:1)
以上代码返回实际文件大小。设置/用法中显示的值显示已分配的大小。 分配的大小应大于实际大小。
这就是您的计算值和设置/使用值不匹配的原因。
如果您需要访问文件的已分配大小,请在NSURL类中使用NSURLTotalFileAllocatedSizeKey。 NSFileManager 类中没有可用的方法/属性来获取分配的大小 [据我所知]。
请详细了解NSURL课程的文件属性键。
仅供参考:如果您尝试访问sanboxed app的主目录中的 / Library / Caches / Snapshot 文件夹,我们将收到权限错误。
这可能对您有所帮助。