文件夹的操作NSFileManager

最近好多地方用到了关于文件夹及文件路径的操作,特此总结一下.

1.获取应用目录

系统给我们提供了下面这个方法,该方法可以快速获取相关目录:

FOUNDATION_EXPORT NSArray *NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory directory, NSSearchPathDomainMask domainMask, BOOL expandTilde);

其中NSSearchPathDirectory字段就是我们要找的文件目录, 这个枚举中我们平时使用较多的是如下三个:

NSDocumentDirectory 
NSCachesDirectory
NSLibraryDirectory

如获取cache文件夹:

NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).lastObject;

2.创建一个文件夹

很多时候我们还要在系统文件夹下面再创建一个新的文件夹.
方法如下:
// 创建一条路径

-(NSString *)createFolder:(NSString *)folder
{    
    BOOL isDir = NO;
    NSFileManager *fileManager = [NSFileManager defaultManager];
    BOOL existed = [fileManager fileExistsAtPath:folder isDirectory:&isDir];
    if ( !(isDir == YES && existed == YES) )
    {
        [fileManager createDirectoryAtPath:folder withIntermediateDirectories:YES attributes:nil error:nil];
    }
    return folder;
}

3.获取某文件夹下所有的文件路径

// 获取存储目录下的所有音频文件
- (NSArray *)getLocalFilePathArray:(NSString *)filePath
{
NSMutableArray *filePathArray = [NSMutableArray array];

    NSFileManager* manager = [NSFileManager defaultManager];
    NSString *filePath = [NSString stringWithFormat:@"%@/%@",NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).lastObject, filePath];
    NSEnumerator *childFilesEnumerator = [[manager subpathsAtPath:filePath] objectEnumerator];

    NSString* fileName;
    while ((fileName = [childFilesEnumerator nextObject]) != nil){
        NSString* fileAbsolutePath = [filePath stringByAppendingPathComponent:fileName];
        [filePathArray addObject:fileAbsolutePath];
    }
    return filePathArray;
}

4.获取文件夹中单个文件的大小

- (long long) fileSizeAtPath:(NSString*) filePath
{
    NSFileManager* manager = [NSFileManager defaultManager];
    if ([manager fileExistsAtPath:filePath])
    {
        return [[manager attributesOfItemAtPath:filePath error:nil] fileSize];
    }
    return 0;
}

5.获取整个文件夹的大小

有了上面的获取单个文件大小的方法,我们还可以获取整个文件夹的大小,如下:
- (float ) folderSizeAtPath:(NSString) folderPath
{
NSFileManager
manager = [NSFileManager defaultManager];
if (![manager fileExistsAtPath:folderPath])
return 0;
NSEnumerator childFilesEnumerator = [[manager subpathsAtPath:folderPath] objectEnumerator];
NSString
fileName;
long long folderSize = 0;
while ((fileName = [childFilesEnumerator nextObject]) != nil)
{
NSString* fileAbsolutePath = [folderPath stringByAppendingPathComponent:fileName];
folderSize += [self fileSizeAtPath:fileAbsolutePath];
}
return folderSize/(1024.0*1024.0);
}

目前用到的这么多, 当然还有许多方法未列出来, 欢迎各位同学补充.

你可能感兴趣的:(文件夹的操作NSFileManager)