最近好多地方用到了关于文件夹及文件路径的操作,特此总结一下.
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);
}
目前用到的这么多, 当然还有许多方法未列出来, 欢迎各位同学补充.