ios 计算文件夹大小 列举目录/文件

-(long)fileSizeForDir:(NSString*)path//计算文件夹下文件的总大小
{
    long size = 0;
    NSFileManager *fileManager = [[NSFileManager alloc] init];
    NSArray* array = [fileManager contentsOfDirectoryAtPath:path error:nil];
    for(int i = 0; i<[array count]; i++)
    {
        NSString *fullPath = [path stringByAppendingPathComponent:[array objectAtIndex:i]];
 
        BOOL isDir;
        if ( !([fileManager fileExistsAtPath:fullPath isDirectory:&isDir] && isDir) )
        {
            NSDictionary *fileAttributeDic = [fileManager attributesOfItemAtPath:fullPath error:nil];
            size += fileAttributeDic.fileSize;
        }
        else
        {
            [self fileSizeForDir:fullPath];
        }
    }
    [fileManager release];
    return size;
 
}
//单位:MB
- (NSString *)sizeCache{
    NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    long docSize = [self fileSizeForDir:docPath];
 
    NSArray*paths=NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES);
    NSString*cachesDir = [paths objectAtIndex:0];
    NSString *ImageCachePath = [cachesDir stringByAppendingPathComponent:@"ImageCache"];
    NSLog(@"ImageCacheSize:%@",ImageCachePath);
    long ImageCacheSize = [self fileSizeForDir:ImageCachePath];
 
    long totalSize = docSize + ImageCacheSize;
    const unsigned int bytes = 1024*1024 ;   //字节数,如果想获取KB就1024,MB就1024*1024
    NSString *string = [NSString stringWithFormat:@"%.2f",(1.0 *totalSize/bytes)];
    NSLog(@"docSize:%ld,ImageCacheSize:%ld",docSize,ImageCacheSize);
    return string;
}


在开发iPhone程序时,有时候要对文件进行一些操作。而获取某一个目录中的所有文件列表,是基本操作之一。通过下面这段代码,就可以获取一个目录内的文件及文件夹列表。

NSFileManager *fileManager = [NSFileManager defaultManager];

//在这里获取应用程序Documents文件夹里的文件及文件夹列表

NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentDir = [documentPaths objectAtIndex:0];

NSError *error = nil;

NSArray *fileList = [[NSArray alloc] init];

//fileList便是包含有该文件夹下所有文件的文件名及文件夹名的数组

fileList = [fileManager contentsOfDirectoryAtPath:documentDir error:&error];

以下这段代码则可以列出给定一个文件夹里的所有子文件夹名

NSMutableArray *dirArray = [[NSMutableArray alloc] init];

BOOL isDir = NO;

//在上面那段程序中获得的fileList中列出文件夹名

for (NSString *file in fileList) {

NSString *path = [documentDir stringByAppendingPathComponent:file];

[fileManager fileExistsAtPath:path isDirectory:(&isDir)];

if (isDir) {

[dirArray addObject:file];

}

isDir = NO;

}

NSLog(@"Every Thing in the dir:%@",fileList);

NSLog(@"All folders:%@",dirArray);



你可能感兴趣的:(ios 计算文件夹大小 列举目录/文件)