如何检索目录大小,包括所有子目录?

时间:2010-04-04 12:44:46

标签: iphone objective-c

我已经像这样从网上存储了图像

Documents/imagecache/domain1/original/path/inURI/foo.png
Documents/imagecache/domain2/original/path/inURI/bar.png
Documents/imagecache/...
Documents/imagecache/...

现在我想查看imagecache的大小,包括所有子目录。

是否有方便的方法 - 最好不要手动抓取所有数据?

修改

我想查看iPhone应用程序内的大小。越狱是没有选择的。

解决方案

源于尼古拉的回答

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSFileManager *fileMgr = [NSFileManager defaultManager];
NSString *p = [documentsDirectory stringByAppendingPathComponent:path];
unsigned long long x =0 ;
for (NSString *s in [fileMgr subpathsAtPath:p]) {
    NSDictionary *attributes = [fileMgr attributesOfItemAtPath: [p stringByAppendingPathComponent:s] error:NULL];
    x+=[attributes fileSize];
}

1 个答案:

答案 0 :(得分:1)

信息未存储在文件系统中。没有遍历目录就无法获得组合大小。

我不知道这样做的库函数,但这是一个应该有效的快速入侵:

unsigned long long combinedSize = 0;
for (NSString* path in [[NSFileManager defaultManager] subpathsAtPath:myDir]) {
    combinedSize += [[attributesOfItemAtPath:path error:NULL] fileSize];
}

编辑2015:

我为a similar question here添加了更全面(更正确)的答案。