文件夹的大小错误(folder size wrong)

2019-10-29 10:36发布

此代码是正确的,但该文件夹的大小是错误的。 如果我改变了目录的大小永远是错的。 例如,“%@/Caches/com.apple.Safari/Webpage预览”的大小为23 MB,但我有16.5 KB。

NSString *path = [NSString stringWithFormat:@"%@/Caches/com.apple.Safari/Webpage Previews", [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) objectAtIndex:0]];
    NSNumber *fileSize = [[[NSFileManager defaultManager] attributesOfItemAtPath:path error:nil] objectForKey:NSFileSize];
    resultsize += [fileSize unsignedLongLongValue];

还我用这一点,但大小始终是错误的:

NSFileManager *fm = [[NSFileManager alloc] init];    
    NSURL *LibraryURL = [[fm URLsForDirectory:NSLibraryDirectory inDomains:NSUserDomainMask] lastObject];
    NSURL *previewsURL = [LibraryURL URLByAppendingPathComponent:@"Caches/com.apple.Safari/Webpage Previews"];

    resultSize += [[[fm attributesOfItemAtPath:[previewsURL path] error:nil] objectForKey:NSFileSize] unsignedIntegerValue];

你能帮助我吗? 谢谢。

Answer 1:

如果你想获得一个文件夹中的所有文件的大小,你需要在文件夹中的内容进行迭代,并得到实际文件的大小:

unsigned long long totalSize = 0;
NSFileManager *fm = [[NSFileManager alloc] init];
NSURL *libraryURL = [[fm URLsForDirectory:NSLibraryDirectory inDomains:NSUserDomainMask] lastObject];
NSURL *previewsURL = [LibraryURL URLByAppendingPathComponent:@"Caches/com.apple.Safari/Webpage Previews"];

NSDirectoryEnumerator *enumerator = [fm enumeratorAtURL:previewsURL includingPropertiesForKeys:[NSArray arrayWithObject:NSURLFileSizeKey] options:0 errorHandler:nil /* or an actual error handler */];

for (NSURL *url in enumerator) {
    NSNumber *sizeNumber;
    if ([url getResourceValue:&sizeNumber forKey:NSURLFileSizeKey error:nil /* or an error */])
        totalSize += [sizeNumber unsignedLongLongValue]; 
}

(我没有测试过这一点。)



Answer 2:

狮子对这些累积的大小某种缓存。 尝试服务器卷(的Mac OS X Lion的服务器AFP)上:

  • 打开文件夹,有很多的子文件夹
  • 功能表视图>作为列表
  • 功能表视图>排列方式>尺寸
  • 取景器显示了“---”组中的所有子文件夹
  • 功能表视图>查看显示选项
  • 勾选“计算所有的文件大小”
  • 现在发现者群体的适当的子文件夹
  • 甚至当你关闭该窗口,断开服务器并重新连接,这些大小是否有更快,也当不安排按大小

- >其中存储这些信息? 要使用的API?



文章来源: folder size wrong