变更记录
方案名称
数据存储 - 文件(目录)操作笔记
关键字
数据存储 \ 文件操作 \ 文件夹 \ 文件目录操作 \ 笔记
需求场景
- 进行文件操作
- 管理数据文件
参考链接
- 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]; }]; }
|
效果图
(无)
备注