2012-01-30 102 views
0

此代码正确,但文件夹大小错误。如果我更改目录,大小总是错误的。例如,“%@/Caches/com.apple.Safari/Webpage Previews”的大小为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]; 

你能帮助我吗? 谢谢。

+0

我喜欢任何以此开头的帖子:此代码是正确的,但其他一切都是错误的。 – 2012-01-30 17:27:33

回答

4

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

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]; 
} 

(我的天堂没有经过测试。)

+0

我是初学者,但resultSize + = [...]没有更多? – Joannes 2012-01-30 15:34:08

+0

好的,解决了!谢谢!添加resultSize + = [[[fm attributesOfItemAtPath:[previewsURL path] error:nil] objectForKey:NSFileSize] unsignedIntegerValue]; – Joannes 2012-01-30 15:47:23

-1

Lion对这些累积尺寸有某种缓存。尝试服务器卷(的Mac OS X Lion的服务器AFP)上:

  • 开放,有很多的子文件夹
  • 菜单查看的文件夹>中列出
  • 菜单视图>排列方式>尺寸
  • 搜索节目在“---”组
  • 菜单中的所有子文件夹>查看显示选项
  • 勾选“计算所有文件大小”
  • 现在发现者群体的子文件夹适当地
  • ,甚至当你关闭该窗口,断开服务器并重新连接,这些尺寸在那里,也当不按大小

安排更快 - >其中存储这些信息?使用哪个API?