2012-01-30 106 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?