确定文件夹大小

时间:2012-01-28 09:46:09

标签: objective-c macos filesize

使用此代码,如果复选框是NSOnState,我确定文件大小,但文件夹值始终为0.目录是正确的。 你能救我吗?

unsigned long long resultsize=0;
if(imagehistoryS.state == NSOnState) {
    NSString *path = [NSString stringWithFormat:@"Users/Giovanni/Desktop/test", [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) objectAtIndex:0]];     
    NSNumber *fileSize = [[[NSFileManager defaultManager] attributesOfItemAtPath:path error:nil] objectForKey:NSFileSize];
    resultsize += [fileSize doubleValue];
}
[result setStringValue:[NSString stringWithFormat:@"Total size items selected: %f", resultsize]];

2 个答案:

答案 0 :(得分:1)

您传入了一个字符串,但指定了NSUserDomainMask。我试过这个并且它有效。

NSUInteger resultSize = 0;

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

NSLog(@"Size: %lu", resultSize);

这适用于ARC环境。

注意,我尽可能使用NSURL而不是NSString文件路径。此外,您无需在搜索路径中对用户名进行硬编码。

已更新,可在评论中显示特定文件夹

答案 1 :(得分:0)

在您stringWithFormat中,您缺少格式说明符%@