iphone - iOS递归文件夹大小

标签 iphone objective-c ios file size

我将文件存储在本地文档目录中,以文件夹分隔。 有没有一种简单的方法可以让我获取iPhone上文档目录和所有子目录内容的文件大小?

我可以手动遍历文件夹并不断增加文件大小,但我希望有更干净、更高效的东西。

谢谢!

最佳答案

您可以递归遍历所有文件夹并获取大小。 像这样:

+(NSUInteger)getDirectoryFileSize:(NSURL *)directoryUrl
{
    NSUInteger result = 0;
    NSArray *properties = [NSArray arrayWithObjects: NSURLLocalizedNameKey,
                           NSURLCreationDateKey, NSURLLocalizedTypeDescriptionKey, nil];

    NSArray *array = [[NSFileManager defaultManager]
                      contentsOfDirectoryAtURL:directoryUrl
                      includingPropertiesForKeys:properties
                      options:(NSDirectoryEnumerationSkipsHiddenFiles)
                      error:nil];

    for (NSURL *fileSystemItem in array) {
        BOOL directory = NO;
        [[NSFileManager defaultManager] fileExistsAtPath:[fileSystemItem path] isDirectory:&directory];
        if (!directory) {
            result += [[[[NSFileManager defaultManager] attributesOfItemAtPath:[fileSystemItem path] error:nil] objectForKey:NSFileSize] unsignedIntegerValue];
        }
        else {
            result += [CacheManager getDirectoryFileSize:fileSystemItem];
        }
    }

    return result;
}

关于iphone - iOS递归文件夹大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10711819/

相关文章:

objective-c 我不明白为什么使用 sprintf Bootstrap 会崩溃

ios - 如果在横向模式下 iOS 无法正常工作,则设置框架

iOS Swift,使用标签更新 tableview CellForRow 之外的 UITableView 自定义单元格标签

iphone - 适用于 iPhone 的备忘录应用程序

iphone - 如何部署使用 XCODE 6-beta 和 TestFlight 制作的 Swift iOS 应用程序

iphone - 在 UIImage 上绘制边框和阴影

ios - 自动旋转横向/纵向 View

ios - 如何获取当前 EST 时间 IOS Swift

ios - xCode 6.3.1 在模拟器上运行时缺少引用

objective-c - 如何检查应用程序版本并请求用户更新?