变更记录

序号 录入时间 录入人 备注
1 2016-05-12 Alfred Jiang -

方案名称

数据存储 - 文件(目录)操作笔记

关键字

数据存储 \ 文件操作 \ 文件夹 \ 文件目录操作 \ 笔记

需求场景

  1. 进行文件操作
  2. 管理数据文件

参考链接

  1. Sina - NSJSONSerialization-JSON数据与NSDictionary和NSArray之间的转化

详细内容

1. 创建文件目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
- (NSString *)dirFullPath:(NSString *)dirName
{
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [path objectAtIndex:0];
NSString *dirPath = [documentsDirectory stringByAppendingPathComponent:dirName];

BOOL isDirectory = NO;

if ([[NSFileManager defaultManager] fileExistsAtPath:dirPath isDirectory:&isDirectory]) {

if (isDirectory) {

return dirPath;
}
}

[[NSFileManager defaultManager] createDirectoryAtPath:dirPath withIntermediateDirectories:YES attributes:nil error:NULL];

return dirPath;
}
2. 读取文件目录下全部文件
1
NSArray *directoryContents = [[NSFileManager defaultManager] subpathsAtPath:dirFullPath];
3. 向文件目录添加文件,超过指定最大个数 ( MAX_FILES_COUNT ) 移除多余文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
NSArray *directoryContents = [[NSFileManager defaultManager] subpathsAtPath:dirFullPath];

NSArray *sortedList = [directoryContents sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {

return [obj2 compare:obj1];
}];

if ([sortedList count] > MAX_FILES_COUNT) {

NSArray *subList = [sortedList subarrayWithRange:NSMakeRange(MAX_FILES_COUNT, ([sortedList count] - MAX_FILES_COUNT))];

[subList enumerateObjectsUsingBlock:^(NSString *obj, NSUInteger idx, BOOL * _Nonnull stop) {

NSLog(@"Remove file : %@",obj);
[[NSFileManager defaultManager] removeItemAtPath:[[self dirPathForURL:URLString] stringByAppendingPathComponent:obj] error:nil];
}];
}

效果图

(无)

备注